2

在struts 2中。我在我的动作控制器中定义了一个属性,如下所示:

private int row;
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}

我该如何处理:在客户端,用户输入行是一个字符串(例如:row='abc')。我的操作将有错误日志:

   ognl.MethodFailedException: Method "setRow" failed for object 
at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1305)
at ognl.OgnlRuntime.setMethodValue(OgnlRuntime.java:1494)
at ognl.ObjectPropertyAccessor.setPossibleProperty(ObjectPropertyAccessor.java:85)
at ognl.ObjectPropertyAccessor.setProperty(ObjectPropertyAccessor.java:162)
at     com.opensymphony.xwork2.ognl.accessor.ObjectAccessor.setProperty(ObjectAccessor.java:27)

我想处理:如果行是字符串->返回行=0(我不想将行的属性更改为字符串类型,我仍然想保持行是int或整数)请帮助我。谢谢!

4

1 回答 1

1

Way 1

改变int as String

private String row;

public String getRow()
{
   return row;
}

public void setRow(String row)
{
   this.row = row;
}

private boolean validateRow(String row)
{
  if(isInteger())
    {
      // check the given value as int or Integer.
      return true;
    }
  // show the message invalid
  return false;
}

Way 2

使用javaScript允许only numbers在此处backSpace尝试

function isNumber(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;
    if (charCode > 31 && (charCode < 48 || charCode > 57)) {
        return false;
    }
    return true;
}
于 2013-10-04T04:05:36.103 回答