2013-01-21 50 views
0

我的問題是下面, 我有我使用了我的Web應用程序的佈局A4J:在的commandButton模板JSF不行

<div id="header"> 
    <ui:insert name="header"> 
     [Top Bar content will be inserted here] 
    </ui:insert> 
    </div> 



    <div id="main"> 
     <ui:insert name="main"> 
      [Nav Bar Left content will be inserted here] 
     </ui:insert> 
    </div> 

    <div id="button"> 
     <ui:insert name="button"> 
      [Nav Bar Left content will be inserted here] 
     </ui:insert> 
    </div> 

那麼的template.xhtml我有一個addOrder.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:a4j="http://richfaces.org/a4j" 
xmlns:rich="http://richfaces.org/rich" 
template="/WEB-INF/template/popUpInsert.xhtml"> 

<ui:define name="header"> 
    <h:outputLabel value="Status" /> 
    <rich:inplaceInput value="#{ordineController.orderToSave.status}" /> 
    <h:outputLabel value="Code" /> 
    <rich:inplaceInput value="#{ordineController.orderToSave.code}" /> 
</ui:define> 
<ui:define name="main"> 
    Here there is a data table that contains lines of the order 
</ui:define> 
<ui:define name="button"> 
<h:form> 
<a4j:commandButton value="Save" action="#{ordineController.addOrder()}" /> 
<h:form> 
</ui:define> 

,但是當我嘗試保存訂單都狀態和代碼都爲空,我試圖改變一個範圍按鈕來保存(執行=「@全」),但沒有

有什麼不對?

+1

爲什麼你選擇在模板中沒有任何表單?不包含在「」中的任何內容都不會提交給服務器。所有這些輸入組件都不會在服務器端處理它們的值 – kolossus

回答

0

添加到您的<h:messages styleClass="message" />頁面,你會看到更多的JSF的警告,你的情況應該有一個關於失蹤的形式,因爲JSF知道哪些內容需要在裏面一個警告。最後,如果你想提交,所有的HTML和JavaScript都需要輸入表單。

0

您需要將相關輸入組件以與命令組件相同的形式放置。任何與命令組件形式不同的輸入組件在提交中都會被忽略。請注意,這是一個HTML限制,而不是JSF限制。

所以,這應該爲你做:

<h:form> 
    <div id="header"> 
     <ui:insert name="header"> 
      [Top Bar content will be inserted here] 
     </ui:insert> 
    </div> 

    <div id="main"> 
     <ui:insert name="main"> 
      [Nav Bar Left content will be inserted here] 
     </ui:insert> 
    </div> 

    <div id="button"> 
     <ui:insert name="button"> 
      [Nav Bar Left content will be inserted here] 
     </ui:insert> 
    </div> 
</h:form> 

和:

<ui:define name="header"> 
    <h:outputLabel value="Status" /> 
    <rich:inplaceInput value="#{ordineController.orderToSave.status}" /> 
    <h:outputLabel value="Code" /> 
    <rich:inplaceInput value="#{ordineController.orderToSave.code}" /> 
</ui:define> 
<ui:define name="main"> 
    Here there is a data table that contains lines of the order 
</ui:define> 
<ui:define name="button"> 
    <a4j:commandButton value="Save" action="#{ordineController.addOrder()}" /> 
</ui:define> 

要小心,不要製造 「上帝」 的形式這樣。

相關問題