[ 
https://issues.apache.org/jira/browse/WW-3357?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Lukasz Lenart updated WW-3357:
------------------------------
    Description: 
I'm getting:

{noformat}
ognl.MethodFailedException: Method "setMyIntVariable" failed for object 
org.kevin.struts2.test.actions.TestAction@79fa79fa 
[java.lang.NoSuchMethodException: 
org.kevin.struts2.test.actions.TestAction.setMyIntVariable([Ljava.lang.String;)]
{noformat}

...when I try to submit a form with a <s:textfield> that is mapped to an 
integer in my action. Previously, there was an issue where this happened if the 
value was <= 0, but this happens blank values. Should it not default to zero?

Here is a snippet from my .jsp:

{code:xml}
<s:form action="validatoraction">
        <s:textfield name="myIntVariable" label="Integer variable: "/>
        <s:textfield name="myStringVariable" label="String value: " />
        <s:submit />
</s:form>
{code}

Here is my struts.xml

{code:xml}
<struts>
        <constant name="struts.devMode" value="false" />
    <constant name="struts.action.extension" value="action" />
    <package name="struts2testerdefault" namespace="" extends="struts-default">
            <action name="foo">
                <result>/bar.jsp</result>
            </action>
            <action name="validatoraction" 
class="org.kevin.struts2.test.actions.TestAction">
                <result>/maintesterresult.jsp</result>
                <result name="input">/maintesterpage.jsp</result>
            </action>
            <action name="maintesterpage">
                        <result>/maintesterpage.jsp</result>
                </action>
    </package>
</struts>
{code}

Here is my action:

{code:java}
package org.kevin.struts2.test.actions;

import java.sql.Timestamp;
import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport {
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private int myIntVariable;
        private String myStringVariable;
        private Timestamp myTimeStamp;
        private Date myDate;
        
        @Override
        public String execute() throws Exception {
                myTimeStamp = new Timestamp(new java.util.Date().getTime());
                myDate = new java.util.Date();
                return SUCCESS;
        }

        public int getMyIntVariable() {
                return myIntVariable;
        }

        public void setMyIntVariable(int myIntVariable) {
                this.myIntVariable = myIntVariable;
        }

        public String getMyStringVariable() {
                return myStringVariable;
        }

        public void setMyStringVariable(String myStringVariable) {
                this.myStringVariable = myStringVariable;
        }

        public Timestamp getMyTimeStamp() {
                return myTimeStamp;
        }

        public void setMyTimeStamp(Timestamp myTimeStamp) {
                this.myTimeStamp = myTimeStamp;
        }

        public Date getMyDate() {
                return myDate;
        }

        public void setMyDate(Date myDate) {
                this.myDate = myDate;
        }

}
{code}

  was:
I'm getting:

ognl.MethodFailedException: Method "setMyIntVariable" failed for object 
org.kevin.struts2.test.actions.TestAction@79fa79fa 
[java.lang.NoSuchMethodException: 
org.kevin.struts2.test.actions.TestAction.setMyIntVariable([Ljava.lang.String;)]

...when I try to submit a form with a <s:textfield> that is mapped to an 
integer in my action. Previously, there was an issue where this happened if the 
value was <= 0, but this happens blank values. Should it not default to zero?

Here is a snippet from my .jsp:
<s:form action="validatoraction">
        <s:textfield name="myIntVariable" label="Integer variable: "/>
        <s:textfield name="myStringVariable" label="String value: " />
        <s:submit />
</s:form>

Here is my struts.xml
<struts>
        <constant name="struts.devMode" value="false" />
    <constant name="struts.action.extension" value="action" />
    <package name="struts2testerdefault" namespace="" extends="struts-default">
            <action name="foo">
                <result>/bar.jsp</result>
            </action>
            <action name="validatoraction" 
class="org.kevin.struts2.test.actions.TestAction">
                <result>/maintesterresult.jsp</result>
                <result name="input">/maintesterpage.jsp</result>
            </action>
            <action name="maintesterpage">
                        <result>/maintesterpage.jsp</result>
                </action>
    </package>
</struts>

Here is my action:
package org.kevin.struts2.test.actions;

import java.sql.Timestamp;
import java.util.Date;

import com.opensymphony.xwork2.ActionSupport;

public class TestAction extends ActionSupport {
        
        /**
         * 
         */
        private static final long serialVersionUID = 1L;
        private int myIntVariable;
        private String myStringVariable;
        private Timestamp myTimeStamp;
        private Date myDate;
        
        @Override
        public String execute() throws Exception {
                myTimeStamp = new Timestamp(new java.util.Date().getTime());
                myDate = new java.util.Date();
                return SUCCESS;
        }

        public int getMyIntVariable() {
                return myIntVariable;
        }

        public void setMyIntVariable(int myIntVariable) {
                this.myIntVariable = myIntVariable;
        }

        public String getMyStringVariable() {
                return myStringVariable;
        }

        public void setMyStringVariable(String myStringVariable) {
                this.myStringVariable = myStringVariable;
        }

        public Timestamp getMyTimeStamp() {
                return myTimeStamp;
        }

        public void setMyTimeStamp(Timestamp myTimeStamp) {
                this.myTimeStamp = myTimeStamp;
        }

        public Date getMyDate() {
                return myDate;
        }

        public void setMyDate(Date myDate) {
                this.myDate = myDate;
        }

}



> ognl.MethodFailedException when you do not enter a value for a field mapped 
> to an int.
> --------------------------------------------------------------------------------------
>
>                 Key: WW-3357
>                 URL: https://issues.apache.org/jira/browse/WW-3357
>             Project: Struts 2
>          Issue Type: Bug
>          Components: Core Actions
>    Affects Versions: 2.1.8
>         Environment: Websphere Application Server 6.1
>            Reporter: Kevin Adams
>             Fix For: 2.5.next
>
>
> I'm getting:
> {noformat}
> ognl.MethodFailedException: Method "setMyIntVariable" failed for object 
> org.kevin.struts2.test.actions.TestAction@79fa79fa 
> [java.lang.NoSuchMethodException: 
> org.kevin.struts2.test.actions.TestAction.setMyIntVariable([Ljava.lang.String;)]
> {noformat}
> ...when I try to submit a form with a <s:textfield> that is mapped to an 
> integer in my action. Previously, there was an issue where this happened if 
> the value was <= 0, but this happens blank values. Should it not default to 
> zero?
> Here is a snippet from my .jsp:
> {code:xml}
> <s:form action="validatoraction">
>       <s:textfield name="myIntVariable" label="Integer variable: "/>
>       <s:textfield name="myStringVariable" label="String value: " />
>       <s:submit />
> </s:form>
> {code}
> Here is my struts.xml
> {code:xml}
> <struts>
>       <constant name="struts.devMode" value="false" />
>     <constant name="struts.action.extension" value="action" />
>     <package name="struts2testerdefault" namespace="" 
> extends="struts-default">
>           <action name="foo">
>               <result>/bar.jsp</result>
>           </action>
>           <action name="validatoraction" 
> class="org.kevin.struts2.test.actions.TestAction">
>               <result>/maintesterresult.jsp</result>
>               <result name="input">/maintesterpage.jsp</result>
>           </action>
>           <action name="maintesterpage">
>                       <result>/maintesterpage.jsp</result>
>               </action>
>     </package>
> </struts>
> {code}
> Here is my action:
> {code:java}
> package org.kevin.struts2.test.actions;
> import java.sql.Timestamp;
> import java.util.Date;
> import com.opensymphony.xwork2.ActionSupport;
> public class TestAction extends ActionSupport {
>       
>       /**
>        * 
>        */
>       private static final long serialVersionUID = 1L;
>       private int myIntVariable;
>       private String myStringVariable;
>       private Timestamp myTimeStamp;
>       private Date myDate;
>       
>       @Override
>       public String execute() throws Exception {
>               myTimeStamp = new Timestamp(new java.util.Date().getTime());
>               myDate = new java.util.Date();
>               return SUCCESS;
>       }
>       public int getMyIntVariable() {
>               return myIntVariable;
>       }
>       public void setMyIntVariable(int myIntVariable) {
>               this.myIntVariable = myIntVariable;
>       }
>       public String getMyStringVariable() {
>               return myStringVariable;
>       }
>       public void setMyStringVariable(String myStringVariable) {
>               this.myStringVariable = myStringVariable;
>       }
>       public Timestamp getMyTimeStamp() {
>               return myTimeStamp;
>       }
>       public void setMyTimeStamp(Timestamp myTimeStamp) {
>               this.myTimeStamp = myTimeStamp;
>       }
>       public Date getMyDate() {
>               return myDate;
>       }
>       public void setMyDate(Date myDate) {
>               this.myDate = myDate;
>       }
> }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to