public Map act(Redirector redirector,
SourceResolver resolver,
Map objectModel,
String source,
Parameters param) throws Exception {
Request request = ObjectModelHelper.getRequest(objectModel);
Map map = new HashMap();
map.put(MAP_URI, request.getRequestURI());
String query = request.getQueryString();
if (query != null && query.length() > 0) {
map.put(MAP_QUERY, "?" + query);
} else {
map.put(MAP_QUERY, "");
}
map.put(MAP_CONTEXTPATH, request.getContextPath());
if ("true".equalsIgnoreCase(param.getParameter(PARAM_PARAMETERS, null))) {
Enumeration e = request.getParameterNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value = request.getParameter(name);
if (value != null && !map.containsKey(name)) {
map.put(name, value);
}
}
String[] paramNames = param.getNames();
for (int i = 0; i < paramNames.length; i++) {
if (paramNames[i].startsWith(PARAM_DEFAULT_PREFIX)
&& (request.getParameter(paramNames[i].substring(PARAM_DEFAULT_PREFIX.length())) == null)) {
map.put(paramNames[i].substring(PARAM_DEFAULT_PREFIX.length()),
param.getParameter(paramNames[i]));
}
}
}
return (map);
}
|