標籤:c class blog code java a
伺服器端驗證使用者輸入資料步驟
1 html頁面上插入要輸入資料控制項
?
| 1 2 3 4 |
<h:inputText size="10" value="#{commodityBean.foradd.name}" id="input1"> <f:validator validatorId="input1Validator" /> </h:inputText> <h:message for="input1"></h:message> |
這裡要用input1Validator驗證inputText控制項的數值。 然後結果用message形式返回。真正驗證的邏輯端在服務端執行。
2 在web-info檔案夾下的face-config.xml裡面寫入
?
| 1 2 3 4 5 6 7 8 |
<validator> <validator-id> input1Validator </validator-id> <validator-class> com.fujitsu.softbg.zl.input1Validator </validator-class> </validator> |
通知伺服器制動去找com.fujitsu.softbg.zl檔案夾下的input1Validator.java檔案。
?
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
package com.fujitsu.softbg.zl; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.validator.Validator; import javax.faces.validator.ValidatorException; public class input1Validator implements Validator { @Override public void validate(FacesContext arg0, UIComponent arg1, Object arg2) throws ValidatorException { // TODO Auto-generated method stub String inputvalue=arg2.toString(); String regEx="[0-9.]+";//表示一個或多個數字 Pattern p=Pattern.compile(regEx); //編譯成模式 Matcher m=p.matcher(inputvalue); //建立一個匹配器 boolean rs=m.matches(); if(!rs){ FacesMessage message = new FacesMessage( FacesMessage.SEVERITY_ERROR, "not a vaild number", "not a vaild number"); throw new ValidatorException(message); } } } |
這裡驗證使用者輸入的資料是0到9和小數點。如果不符合就返回提示訊息。在服務端也可以像javascript一樣用邏輯運算式的方式驗證使用者輸入的字元。