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 または Integer のままにしたい) 助けてください。ありがとう!

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 に答える