You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@struts.apache.org by "Greg Huber (JIRA)" <ji...@apache.org> on 2007/06/05 14:14:27 UTC

[jira] Created: (WW-1967) Dynamic Method Invocation, validator with ActionName-aliasName-validation.xml files.

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.


[jira] Commented: (WW-1967) Dynamic Method Invocation, validator with ActionName-aliasName-validation.xml files.

Posted by "Don Brown (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/struts/browse/WW-1967?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=43693#action_43693 ] 

Don Brown commented on WW-1967:
-------------------------------

Well, first of all, if you are using dynamic method invocation, you don't need wildcards in that way in the action mapping.  Try taking those out and see if you still are having difficulties.

> 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: Core Actions
>    Affects Versions: 2.0.6
>         Environment: Fedora 4, tomcat
>            Reporter: Greg Huber
>            Priority: Minor
>             Fix For: Future
>
>
> 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.


[jira] Commented: (WW-1967) Dynamic Method Invocation, validator with ActionName-aliasName-validation.xml files.

Posted by "Greg Huber (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/struts/browse/WW-1967?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=43706#action_43706 ] 

Greg Huber commented on WW-1967:
--------------------------------

Don, Not sure what you mean.

For:

http://172.17.30.43:8080/Events/user/eventEdit!save.action

public class EventEdit extends EventBase {
	public String save() {
        {
}

If I change:

        <action name="eventEdit!*" method="{1}"
                class="test..EventEdit">
            <result name="input" type="tiles">.EventEdit</result>
            <result name="cancel" type="redirect-action">
            	<param name="actionName">events</param>
            	<param name="parse">true</param>
         		<param name="pgn">${bean.pageNum}</param>
         	</result>
         	<result name="error" type="chain">events</result>
        </action>

to: (remove the * from !*)

        <action name="eventEdit!" method="{1}"
                class="test.EventEdit">
            <result name="input" type="tiles">.EventEdit</result>
            <result name="cancel" type="redirect-action">
            	<param name="actionName">events</param>
            	<param name="parse">true</param>
         		<param name="pgn">${bean.pageNum}</param>
         	</result>
         	<result name="error" type="chain">events</result>
        </action>

I now get this error:
 Struts has detected an unhandled exception:
# Messages: 	There is no Action mapped for namespace /user and action name eventEdit.

Is there anything else I need to change?  Thought the * was to match any method in class EventEdit? 

> 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: Core Actions
>    Affects Versions: 2.0.6
>         Environment: Fedora 4, tomcat
>            Reporter: Greg Huber
>            Priority: Minor
>             Fix For: Future
>
>
> 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.


[jira] Updated: (WW-1967) Dynamic Method Invocation, validator with ActionName-aliasName-validation.xml files.

Posted by "Ted Husted (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/struts/browse/WW-1967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ted Husted updated WW-1967:
---------------------------

    Fix Version/s: Future

Setting Fix Version to "future" for issues without a set fix version. 


> 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
>             Fix For: Future
>
>
> 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.