我有隻能接受數字值的文本字段數組,即1-5。輸入非數字數據的服務器端驗證
<s:textfield name="marks[0]" maxlength="1" />
<s:textfield name="marks[1]" maxlength="1" />
<s:textfield name="marks[2]" maxlength="1" /> and so on upto 9 textfields.
我對這個getter/setter方法如下
public List<Integer> getMarks(){
return marks;
}
public void setMarks(List<Integer> marks){
this.marks = marks;
}
如何確保用戶不輸入字母一樣非數值?如果我輸入字符,它會引發運行時異常'java.lang.ClassCastException:java.lang.String不能轉換爲java.lang.Integer'指向Next JSp頁面中的validate方法。
public void validate(){
for(i=0;i<9;i++){
if (marks.get(i)>5) //this line throws above ClassCastException
addFieldError("...");
}
}
如何解決此異常以及驗證是否繼續?在其他網頁,文本框單有,則顯示invalid.fieldvalue.error但名單我得到異常
現在它正在工作,但我現在收到2場錯誤。其中一個是來自ConversionErrorInterceptor的無效字段錯誤,其中fieldName顯示爲標記[0]或標記[1],另一個是我使用addFieldError添加的catch塊,它清晰易懂。如何僅顯示自定義消息 –
不要添加您的自定義消息並查看此鏈接http://struts.apache.org/2.x/docs/type-conversion.html#TypeConversion-TypeConversionErrorHandling。 –