在struts 2中输入错误类型时出错

时间:2013-10-04 02:31:04

标签: java struts2

在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)

我想处理:如果row是String - >返回行= 0 (我不想将行的属性更改为String类型,我仍然希望保持row为int或Integer) 请帮我。 谢谢!

1 个答案:

答案 0 :(得分: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 numbersbackSpace尝试here

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