2015-09-23 38 views
1

我試圖做同樣的事情到這一點:命令按鈕,檢查一些必填字段,但不是所有的人

<h:form id="form"> 
    <p:inputText id="input1" value="#{mb.input}" required="true" /><br /> 
    <h:panelGroup id="panelGroup"><br /> 
     <p:inputText id="input2" required="true" /><br /> 
     <p:commandButton id="doSomething" value="something" action="#{mb.doSomething}" /> 
    </h:panelGroup><br /> 
    <p:commandButton id="save" value="Save" action="#{mb.save}" /><br /> 
</h:form> 

這裏是我的問題:當我打的save按鈕,我想要的整個表格需要驗證的地方required="true"(對於input1input2,這都可以正常工作)。

但是,當我打的doSomething按鈕,我想它來檢查只有input2被填滿,無視input1條件(換句話說:如果input2是空的,但即使是input1應該工作,應該不工作)。有沒有辦法做到這一點? (並且我不能使用Managed Beans!)

回答

1

使用<p:commandButton>process屬性這樣

<p:commandButton id="doSomething" value="something" action="#{mb.doSomething}" process="input2"/> 

這樣只會驗證輸入2時點擊。按照Primefaces文檔:

process | null |字符串|要部分處理的組件,而不是整個視圖的 。

+1

是啊!有效!我只想添加到你的答案,它只使input2組件工作,而不是按鈕本身(這是一個問題,因爲它應該做一些其他的東西,至少在我的情況下)。最後的過程標籤必須是:'process =「input2,doSomething」' –

+1

Denis Klein,你在評論中說我需要在提交'input1'時點擊'doSomething'按鈕。接受的答案然後不會滿足您的要求。你能澄清一下嗎? – lametaweb

+0

男人,我非常抱歉,我想我只是在我回答時感到困惑......這不是我的意思:'doSomething'需要檢查'input2',而不是'input1'。 –

0

只給面板內的兩個組件提供立即數=「true」屬性。或者,您也可以使用面板中按鈕的Ajax來發送面板內容。

注1:面板內的輸入要求屬性爲value

注2:還包括一個update屬性到兩個按鈕。即:

update="@form" 

注3:您也可以在表單中包含<p:messages/>元素。

+0

按下Save按鈕時,此解決方案是否驗證input2字段? – Geinmachi

+0

是的。它將驗證兩個輸入。 – lametaweb

+0

Denis Klein,點擊'doSomething'按鈕時是否需要輸入'input1'值?如果是,那麼Ajax解決方案將無濟於事。無論如何,如果驗證必要條件變得複雜,您最好管理backing bean方法內的驗證,並自行生成相應的驗證消息。 – lametaweb

相關問題