Dynamic Method Invocation, validator with ActionName-aliasName-validation.xml
files.
------------------------------------------------------------------------------------
Key: WW-1967
URL: https://issues.apache.org/struts/browse/WW-1967
Project: Struts 2
Issue Type: Bug
Components: Actions
Affects Versions: 2.0.6
Environment: Fedora 4, tomcat
Reporter: Greg Huber
Priority: Minor
Hello,
I have been trying to get validation working with dynamic method invocation,
using ActionName-aliasName-validation.xml files.
When the struts.property is set >> struts.enable.DynamicMethodInvocation=true,
in the DefaultActionMapper the mapping name is changed by removing !submit
from the action eg fieldValidatorsExamples!submit becomes
fieldValidatorsExamples. When the validator tries to find
FieldValidatorsExampleAction-fieldValidatorsExamples!submit-validator.xml it
cannot, as the validator is looking for
FieldValidatorsExampleAction-fieldValidatorsExamples-validator.xml. But this
is now not linked to a method.
if (allowDynamicMethodCalls) {
// handle "name!method" convention.
String name = mapping.getName();
int exclamation = name.lastIndexOf("!");
if (exclamation != -1) {
mapping.setName(name.substring(0, exclamation));
mapping.setMethod(name.substring(exclamation + 1));
}
}
With struts.enable.DynamicMethodInvocation=false, validator works but method
name is null.
This line of code is causing the problem mapping.setName(name.substring(0,
exclamation));. Without this line seems to work but I am no expert!
eg:
<action name="fieldValidatorsExamples!*"
class="org.apache.struts2.showcase.validation.FieldValidatorsExampleAction"
method="{1}" >
<result name="input"
type="dispatcher">/validation/fieldValidatorsExample.jsp</result>
<result type="dispatcher">/validation/successFieldValidatorsExample.jsp</result>
</action>
<s:form action="fieldValidatorsExamples!submit" namespace="/validation"
method="POST" theme="xhtml">
<s:textfield label="Required Validator Field"
name="requiredValidatorField" />
<s:textfield label="Required String Validator Field"
name="requiredStringValidatorField" />
<s:textfield label="Integer Validator Field"
name="integerValidatorField" />
<s:textfield label="Date Validator Field" name="dateValidatorField"
/>
<s:textfield label="Email Validator Field"
name="emailValidatorField" />
<s:textfield label="URL Validator Field" name="urlValidatorField" />
<s:textfield label="String Length Validator Field"
name="stringLengthValidatorField" />
<s:textfield label="Regex Validator Field"
name="regexValidatorField"/>
<s:textfield label="Field Expression Validator Field"
name="fieldExpressionValidatorField" />
<s:submit label="Submit" />
</s:form>
Cheers Greg
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.