2013-10-04 40 views
2

在支柱2.我定義在我的動作控制器中的屬性象下面這樣:錯誤當輸入錯誤的類型在支柱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 (我不想改變行的屬性爲String類型,我還是想保留行是int或Integer) 請幫助我。 謝謝!

+0

使其成爲字符串,之後驗證給定的輸入是否爲int。 – newuser

+0

定義爲String很容易。但我仍然想保持int或Integer。我beleave struts 2有任何方式來處理它 – MartinJoo

+0

但是你不能限制用戶把字符串作爲輸入。嘗試使用javascript限制字符串。允許數字和退格。 – newuser

回答

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