validation jsf - 如何讓驗證取決於按下的按鈕?




2 Answers

我知道您要根據name輸入字段進行過濾。 <p:commandButton>默認發送一個ajax請求,並且有一個process屬性,您可以在其中指定在提交期間要處理的組件。 在您的特定情況下,您應該處理name輸入字段和當前按鈕(以便調用其操作)。

<p:commandButton process="@this name" ... />

process屬性可以採用空格分隔的組件的(相對)客戶端ID集合,其中@this指的是當前組件。 默認情況下,如果<p:commandButton>@form (它覆蓋了當前表單的所有輸入字段和按下的按鈕),這就是為什麼它們都在您的初始嘗試中得到驗證的原因。 在上面的示例中,不會處理所有其他輸入字段(因此也不會進行驗證)。

但是,如果您打算在按下相關按鈕時跳過所有字段required驗證,那麼您最終可以處理多個不一定需要全部填寫的字段,那麼您需要進行required="true"有條件的,它會檢查按鈕是否被按下。 例如,只有在按下保存按鈕時才讓它評估為true

<p:inputText ... required="#{not empty param[save.clientId]}" />
...
<p:inputText ... required="#{not empty param[save.clientId]}" />
...
<p:commandButton binding="#{save}" value="Save" ... />

這樣,當按下不同的按鈕時,它將不會被驗證為required="true" 。 上面示例中的技巧是按下的按鈕的名稱(本質上是客戶端ID)已作為請求參數發送,您只需檢查其在請求參數映射中的存在。

也可以看看:

primefaces ajaxstatus

我創建了表單,我希望在創建新表時在表上顯示以前存在的項。 我希望在填寫表格時顯示匹配的項目。 但是當我嘗試在沒有完成表單的情況下過濾列表時,會出現驗證消息,並且表格不會更新。

不知道是否可能,但我想做的事情是這樣的:

<h:form id="form">

    <h:outputText value="Name: "/>
    <p:inputText value="#{itemsBean.name}" id="name" required="true"/>
    <br/>
    <h:outputText value="Description: "/>
    <p:inputText value="#{itemsBean.description}" id="description" required="true"/>

    <p:commandButton value="Save" update="form" actionListener="#{itemsBean.save}"/> //validate and save
    <p:commandButton value="Filter" update="form" actionListener="#{itemsBean.updateItemsList}"/> //don't validate, and update the table.

    <p:dataTable id="list" value="#{itemsBean.itemsList}" var="item">     
        <p:column>
            <h:outputText value="#{item.name}"/>
        </p:column>
        <p:column>
            <h:outputText value="#{item.description}"/>
        </p:column>
    </p:dataTable>

</h:form>

我是JSF的新手。




我用非ajax提交測試了這個:

<p:inputText ... required="#{not empty param.includeInSave1}" />
...
<p:inputText ... required="true" />
...
<p:commandButton value="Save1" ajax="false">
  <f:param name="includeInSave1" value="true" />
</p:commandButton>

<p:commandButton value="Save2" ajax="false" />

第一個輸入只需在Save1按鈕提交時驗證。




Related

validation jsf jsf-2 primefaces commandbutton