2010-07-12 72 views
1

我有一個搜索表單綁定到一個包含4個輸入文本字段的支持bean。我工作的設計表明用戶應該能夠看到搜索結果,但它們不應該是可編輯的。我決定使用呈現的屬性,顯示的輸入,如果管理bean是空的,並顯示輸出的文本標籤,如果它不是:在inputText上呈現屬性

<t:inputText styleClass="inputText" id="name" rendered="#{not searchCriteria.fieldsEntered}" 
value="#{searchCriteria.name}" autocomplete="off"></t:inputText> 
<h:outputText value="#{searchCriteria.name}" rendered="#{searchCriteria.fieldsEntered}"></h:outputText>          

顯示部件工作正常,但我注意到,只有第一當輸入多個搜索字段時,字段將存儲在受管理的Bean中。

我從inputText中刪除了一個呈現的屬性,並且果然這導致了我的問題。我可以推斷這裏發生了什麼,但我不明白爲什麼。

我相信在這種情況下,我將刪除outputText標記並將其呈現爲禁用狀態。我只是好奇爲什麼我最初的計劃是不正確的。

回答

2

rendered="false"將導致輸入元素不呈現,因此其值不會被提交給服務器端。如果您使用請求作用域bean,則不會設置初始值。您希望將bean放在會話範圍內,或者沿h:outputText沿​​添加一個​​,該值將該值傳輸到後續請求。

既然你已經使用Tomahawk's t:inputText我建議還是用它displayValueOnly屬性,而不是rendered屬性和互補h:outputText

在堅果:

<t:inputText displayValueOnly="#{searchCriteria.fieldsEntered}" ... /> 
+0

感謝的快速反應。 – Sean 2010-07-12 18:39:28