在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) 请帮我。 谢谢!
答案 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 numbers
和backSpace
尝试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;
}