[ https://issues.apache.org/jira/browse/WW-1967?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13558672#comment-13558672 ]
Lukasz Lenart commented on WW-1967: ----------------------------------- Basically, creating your own stack(s) with just the interceptors you're using in your app is the best practise :-) http://struts.apache.org/2.x/docs/performance-tuning.html Can I close this issue? > Dynamic Method Invocation, validator with ActionName-aliasName-validation.xml > files. > ------------------------------------------------------------------------------------ > > Key: WW-1967 > URL: https://issues.apache.org/jira/browse/WW-1967 > Project: Struts 2 > Issue Type: Bug > Components: Core Actions > Affects Versions: 2.0.6 > Environment: Fedora 4, tomcat > Reporter: Greg Huber > Priority: Minor > Fix For: 2.3.9 > > Attachments: patch_WW-1967.txt, patch_WW-1967_xwork_2.txt > > > 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. > {code:java} > 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)); > } > } > {code} > 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: > {code:xml} > <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> > {code} > {code:html} > <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> > {code} > Cheers Greg -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira