Uploaded image for project: 'Struts 2'
  1. Struts 2
  2. WW-3357

ognl.MethodFailedException when you do not enter a value for a field mapped to an int.


    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Not A Bug
    • Affects Version/s: 2.1.8
    • Fix Version/s: 2.5.12
    • Component/s: Core Actions
    • Labels:
    • Environment:

      Websphere Application Server 6.1


      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 />

      Here is my struts.xml

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

      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;
      	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;




            • Assignee:
              lukaszlenart Lukasz Lenart
              kadams Kevin Adams
            • Votes:
              1 Vote for this issue
              2 Start watching this issue


              • Created: