第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何讓驗(yàn)證取決于按下的按鈕?

如何讓驗(yàn)證取決于按下的按鈕?

如何讓驗(yàn)證取決于按下的按鈕?我創(chuàng)建了表單,我希望在新表創(chuàng)建時(shí)在表上顯示以前的現(xiàn)有項(xiàng)目。我希望在填寫(xiě)表格時(shí)顯示匹配的項(xiàng)目。但是當(dāng)我嘗試在沒(méi)有完成表單的情況下過(guò)濾列表時(shí),會(huì)出現(xiàn)驗(yàn)證消息,并且表格不會(huì)更新。不知道是否可能,但我想做的事情是這樣的:<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的新手。
查看完整描述

3 回答

?
九州編程

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊

我知道你想根據(jù)name輸入字段進(jìn)行過(guò)濾。在<p:commandButton>默認(rèn)情況下,發(fā)送一個(gè)Ajax請(qǐng)求,并且具有process屬性,其中可以指定要在提交處理的組件。在您的特定情況下,您應(yīng)該處理name輸入字段和當(dāng)前按鈕(以便調(diào)用其操作)。

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

process屬性可以采用空間分隔的組件的(相對(duì))客戶端ID集合,其中@this引用當(dāng)前組件。它默認(rèn)為<p:commandButton>to @form(覆蓋當(dāng)前表單的所有輸入字段和按下的按鈕),這就是為什么它們都在您的初始嘗試中得到驗(yàn)證的原因。在上面的示例中,不會(huì)處理所有其他輸入字段(因此也不會(huì)進(jìn)行驗(yàn)證)。

但是,如果您打算在按下相關(guān)按鈕時(shí)跳過(guò)所有字段的required驗(yàn)證,那么您最終可以處理多個(gè)不一定需要全部填寫(xiě)的字段,那么您需要?jiǎng)?chuàng)建一個(gè)條件而不是檢查按鈕是否被按下。例如,只有在按下保存按鈕時(shí)才進(jìn)行評(píng)估: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"當(dāng)按下不同的按鈕時(shí),它將不會(huì)被驗(yàn)證。上面示例中的技巧是按下的按鈕的名稱(本質(zhì)上是客戶端ID)已作為請(qǐng)求參數(shù)發(fā)送,您可以在請(qǐng)求參數(shù)映射中檢查其存在。

也可以看看:


查看完整回答
反對(duì) 回復(fù) 2019-08-02
?
呼喚遠(yuǎn)方

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊

除了BalusC的答案(非常有用和完整),我想補(bǔ)充一點(diǎn),當(dāng)你使用<h:commandButton />它時(shí),它將驗(yàn)證(必需的,自定義驗(yàn)證)<h:form />命令按鈕所在位置的所有字段,因此當(dāng)你需要使用多個(gè)字段時(shí)在命令按鈕中,您可以認(rèn)為使用不同<h:form />的不同職責(zé)來(lái)避免命令按鈕的提交操作中的意外行為是一種很好的做法。在BalusC的答案中很好地解釋了:JSF頁(yè)面中的多個(gè)h:表單

如果您的表單有驗(yàn)證而且您沒(méi)有更新<h:form />或者您沒(méi)有顯示消息,那么您可能會(huì)頭疼,認(rèn)為<h:commandButton />未觸發(fā)您的操作,但可能是未顯示的驗(yàn)證問(wèn)題。


查看完整回答
反對(duì) 回復(fù) 2019-08-02
?
白豬掌柜的

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊

我用非ajax提交測(cè)試了這個(gè):

<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按鈕提交時(shí)才需要驗(yàn)證第一個(gè)輸入。


查看完整回答
反對(duì) 回復(fù) 2019-08-02
  • 3 回答
  • 0 關(guān)注
  • 513 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)