有時在表單提交前,需要對所填報或者選擇的資料進行校正,只有先通過校正的資料才能到達背景action中,這樣就省去了每次提交都到action中去校正的步驟,能提高效率。方法就是在確定前執行指令碼,去驗證:(xxx代表一個bean)
<h:commandButton value="確定" action="#{xxx.listReport}" onclick="return checkSelectIteam()"/>
js 校正方法:
function checkSelectIteam(){
var rptyear = $("#xxxForm\\:rpt_year").val(); //下拉框選擇年度值
var repType = $("#xxxForm\\:repType").val(); //下拉框選擇類型值
if(-1 == rptyear || -1 == repType){
alert("請選擇年度和類型!");
return false;
}else{
return true;
}
}
這樣只有先通過checkSelectItema()方法之後合法的資料才能提交到後台
還有另外一種方法是添加validator的校正方法,如下:
將如下代碼添加到table中或者其它地方,
<h:inputHidden id="hi" value="fff"validator="#{xxx.validateType}"></h:inputHidden>
然後在需要顯示提示資訊的地方引用此方法傳回值:
<h:message for="hi"></h:message> </span>
<h:outputText value="當前不在任何填報期內,不需要進行填報!" ></h:outputText>
後台調用的validateType方法如下:
public void validateRepType(FacesContext context, UIComponent component, Object obj){
……
throw new ValidatorException(new FacesMessage("info", "錯誤資訊顯示!"));
}