2012-12-28 46 views
1

我在Glassfish上使用Primefaces和JSF-2,試圖交叉驗證表單。 這裏的情景:以另一種形式從按鈕觸發表單驗證

<h:form id="form1"> 
    <p:messages id="msgs" showDetail="false" autoUpdate="true" closable="true" /> 
    some input fields with validation 
</h:form> 

<h:form id="form_upload"> 
    some upload fields that dont trigger validations 
</h:form> 

<h:form id="buts"> 
    <p:commandButton id="save" value="Save" action="#{bean.save}" 
     update=":form1 :form1:msgs" process=":form1"> 
</h:form> 

我想按鈕保存觸發Form1上驗證,這可能嗎?

回答

1

使用屬性process並指定要每個部件要在服務器上進行處理:

<p:commandButton id="save" value="Save" action="#{bean.save}" 
    process=":form1 :form_upload" update=":form1" /> 

不要忘了把p:messages:form1地方,否則你要過更新。

瞭解更多關於AJAX on JSF here

+0

感謝@eljunior,由於某種原因,我無法得到它的工作,它只是忽略按鈕。也許我在更新消息時失敗,但輸入字段的顏色應該改變,它也不起作用。我更新了這個問題,看到有什麼不對?謝謝 –

+0

布魯諾,我唯一注意到的是p:commandButton沒有關閉。在你的實際代碼中它是一樣的嗎?否則,我在這裏測試了相同的代碼(加上幾個輸入字段),它的工作正常。 – elias

+0

順便說一句,如果你正在使用JSF的Mojarra實現,有時它有助於捕獲錯誤來設置上下文參數PROJECT_STAGE。試着在你把這個* web.xml中*:'<的context-param> \t \t​​javax.faces.PROJECT_STAGE \t \t 發展 \t' – elias

0

您可以使用PrimeFaces' <p:remoteCommand>

<h:form id="form1">   
    some input fields with validation 
    <p:remoteCommand name="rc" update="@form" action="#{bean.save}" /> 
</h:form> 

樣本遠程調用:

<h:form id="buts"> 
    <p:commandButton value="Save" type="button" onclick="rc()" /> 
</h> 
相關問題