2011-04-13 130 views
0

我想構建一個表單,根據其他組件的狀態動態更改可見組件的表單。JSF:動態更改表單

例如...有一些文本框和一些複選框,如果用戶激活某個複選框,應該出現一堆其他輸入元素。

我可以使用JSF 2.0 + Tomahawk來做到這一點,還是必須讓另一個庫執行此操作?我該怎麼做?如果沒有AJAX,這是行不通的,是嗎?

在此先感謝!

回答

4

Ajax是一種方便的方法,JSF 2.0帶有ajax捆綁。

下面是一個例子:

<h:selectOneRadio value="#{a7.myCheckbox.state}"> 
     <f:selectItem itemLabel="#{bundle.yes}" itemValue="1"/> 
     <f:selectItem itemLabel="#{bundle.no}" itemValue="0"/> 
     <f:ajax render="uawGroup"/> 
</h:selectOneRadio> 

<h:panelGroup id="uawGroup" layout="block"> 
    <h:outputText value="#{bundle.wichmed}" 
     rendered="#{a7.myCheckbox.state == 1}"/> 
    <h:inputText value="#{}" id="myInput" 
     rendered="#{a7.myCheckbox.state == 1}"/> 
</h:panelGroup> 

當點擊在h:selectOneRadio(項目值== 1) 「是」 的-option將h:panelGroup被渲染。最初它是0(在bean「a7」中設置)。 (h:outputTexth:inputText最初不顯示)

h:panelGroup作爲包裝,因爲你只能更新在網頁上呈現的實際使用AJAX組件。

+0

這太好了,謝謝!但是如果我想要顯示一組特定的組件,如果單擊h:按鈕,它是如何工作的?謝謝! – geeehhdaa 2011-04-14 15:58:21

+0

爲了清楚我想要做什麼:我有一些panelGrids,我希望用戶一步步地通過它們(填入grid1中的東西,按下使grid2出現的按鈕等等) 。我怎樣才能做到這一點?我可以讓服務器處理grid1的某些輸入以在grid2中顯示結果嗎? – geeehhdaa 2011-04-14 16:32:21

+0

@geeehhdaa你也可以在'h:commandButton'中放入'f:ajax'。使用'execute'屬性在ajax調用期間處理輸入字段:'' – 2011-04-14 17:45:32