簡體   English   中英

JSF 2.0中的AJAX onSubmit驗證

[英]AJAX onSubmit validation in JSF 2.0

我開始學習JSF2.0,並遇到了一個問題。 有關如何進行的任何建議都將受到歡迎。

為簡單起見,我重命名了表單元素和類。

我有一個表格,例如:

<h:form id="frmSearch">
    <h:inputText id="dataPoint1" value="#{bean.dataPoint1}"/>
    <div id="dataPoint1Error" class="msgError">Value not found in database.</div>

    <h:inputText id="dataPoint2" value="#{bean.dataPoint2}"/>
    <div id="dataPoint2Error" class="msgError">Value not found in database.</div>

    <h:commandButton action="#{bean.validate}" type="submit" value="Search"/>
</h:form>

CSS類“msgError”默認隱藏元素。

我想在“bean”類中基本上有一個方法,通過檢查數據庫來驗證輸入,然后如果找不到該值,取消隱藏錯誤消息,或者如果找到它,則執行另一個執行的方法實際的功能。

在我看來,它在Java中的工作方式有點類似(原諒任何語法錯誤,只需按照我的想法輸入):

@ManagedBean
public class Bean {
    private String dataPoint1 = "";
    private String dataPoint2 = "";

    public boolean validate() {
        if(dao.fieldExists(this.dataPoint1) && dao.fieldExists(this.dataPoint2)) { //check the database
            performFunctionality();
            return true;
        }
        else {
            return false; //and show error div on screen
        }
    }        

    public void performFunctionality() {
        //do whatever
    }

    //getters and setters
}

任何建議都會非常歡迎! 謝謝!

您沒有使用JSF內置驗證工具。 利用它。

這是它的樣子:

<h:form id="frmSearch">
    <h:inputText id="dataPoint1" value="#{bean.dataPoint1}" validator="#{bean.validateDataPoint}" />
    <h:message for="dataPoint1" />

    <h:inputText id="dataPoint2" value="#{bean.dataPoint2}" validator="#{bean.validateDataPoint}" />
    <h:message for="dataPoint2" />

    <h:commandButton action="#{bean.performFunctionality}" value="Search">
        <f:ajax execute="@form" render="@form" />
    </h:commandButton>
</h:form>

public void validateDataPoint(FacesContext context, UIComponent component, Object convertedValue) {
    if (!dao.fieldExists((String) convertedValue)) {
        throw new ValidatorException(new FacesMessage("Value not found in database."));
    }
}        

必須通過命令按鈕的action方法執行performFunctionality()

當驗證失敗時(即拋出ValidatorException ),消息將顯示在與輸入組件關聯的<h:message>中,並且不會調用action方法。 或許, validator屬性也可以指向一個實現javax.faces.validator.Validator的值得滿足的類。 添加了<f:ajax>以使其成為ajax提交。

也可以看看:

無論您何時學習JSF,請確保您還閱讀了有關轉換和驗證的章節。 不要過多考慮PHP / ASP / JSP / jQuery的方式。 JSF是一個基於MVC框架的完整組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM