com.opensymphony.xwork2.interceptor
public class: ParameterRemoverInterceptor [javadoc |
source]
java.lang.Object
com.opensymphony.xwork2.interceptor.AbstractInterceptor
com.opensymphony.xwork2.interceptor.ParameterRemoverInterceptor
All Implemented Interfaces:
Interceptor
This is a simple XWork interceptor that allows parameters (matching
one of the paramNames attribute csv value) to be
removed from the parameter map if they match a certain value
(matching one of the paramValues attribute csv value), before they
are set on the action. A typical usage would be to want a dropdown/select
to map onto a boolean value on an action. The select had the options
none, yes and no with values -1, true and false. The true and false would
map across correctly. However the -1 would be set to false.
This was not desired as one might needed the value on the action to stay null.
This interceptor fixes this by preventing the parameter from ever reaching
the action.
- paramNames - A comma separated value (csv) indicating the parameter name
whose param value should be considered that if they match any of the
comma separated value (csv) from paramValues attribute, shall be
removed from the parameter map such that they will not be applied
to the action
- paramValues - A comma separated value (csv) indicating the parameter value that if
matched shall have its parameter be removed from the parameter map
such that they will not be applied to the action
No intended extension point
<action name="sample" class="org.martingilday.Sample">
<interceptor-ref name="paramRemover">
<param name="paramNames">aParam,anotherParam</param>
<param name="paramValues">--,-1</param>
</interceptor-ref>
<interceptor-ref name="defaultStack" />
...
</action>
Methods from java.lang.Object: |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method from com.opensymphony.xwork2.interceptor.ParameterRemoverInterceptor Detail: |
public String intercept(ActionInvocation invocation) throws Exception {
if (!(invocation.getAction() instanceof NoParameters)
&& (null != this.paramNames)) {
ActionContext ac = invocation.getInvocationContext();
final Map< String, Object > parameters = ac.getParameters();
if (parameters != null) {
for (String removeName : paramNames) {
// see if the field is in the parameter map
if (parameters.containsKey(removeName)) {
try {
String[] values = (String[]) parameters
.get(removeName);
String value = values[0];
if (null != value && this.paramValues.contains(value)) {
parameters.remove(removeName);
}
} catch (Exception e) {
LOG.error("Failed to convert parameter to string", e);
}
}
}
}
}
return invocation.invoke();
}
Decide if the parameter should be removed from the parameter map based on
paramNames and paramValues . |
public void setParamNames(String paramNames) {
this.paramNames = TextParseUtil.commaDelimitedStringToSet(paramNames);
}
Allows paramNames attribute to be set as comma-separated-values (csv). |
public void setParamValues(String paramValues) {
this.paramValues = TextParseUtil.commaDelimitedStringToSet(paramValues);
}
Allows paramValues attribute to be set as a comma-separated-values (csv). |