Jsf inputText上的呈现属性
我有一个搜索表单绑定到一个包含4个输入文本字段的支持bean。我正在使用的设计表明,用户应该能够看到搜索结果,但它们不应该是可编辑的。如果托管bean为空,我决定使用rendered属性显示输入,如果不是空,则显示输出文本标记:Jsf inputText上的呈现属性,jsf,Jsf,我有一个搜索表单绑定到一个包含4个输入文本字段的支持bean。我正在使用的设计表明,用户应该能够看到搜索结果,但它们不应该是可编辑的。如果托管bean为空,我决定使用rendered属性显示输入,如果不是空,则显示输出文本标记: <t:inputText styleClass="inputText" id="name" rendered="#{not searchCriteria.fieldsEntered}" value="#{searchCriteria.name}" autocomp
<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标记并将渲染更改为disabled。我只是好奇为什么我的初始计划不正确。呈现的rendered=“false”
将导致输入元素未呈现,因此其值不会提交到服务器端。如果您使用的是请求范围的bean,则不会设置初始值。您希望将bean放入会话范围,或者沿着h:outputText
添加一个h:inputHidden
,将值传输到后续请求
因为您已经在使用它的displayValueOnly
属性,而不是rendered
属性和一个补充的h:outputText
在螺母中:
<t:inputText displayValueOnly="#{searchCriteria.fieldsEntered}" ... />