此问题是JSF Primefaces Radio Button show/hide/enable a textarea的后续行动 通过将inputTextArea包装在panelGroup中来解决这两个问题中的一个问题,但是当状态为2(= No)时,我仍然需要弄清楚如何在表单加载时不显示inputTextArea,但只显示第2栏下的无线电正在切换。
<p:column ...>
<p:selectOneRadio ...>
...
<p:ajax update="reason" />
</p:selectOneRadio>
</p:column>
<p:column headerText="Reason For Attribute Failure">
<h:panelGroup id="reason">
<h:inputTextarea value="#{qAndA.fail_reason}" rendered="#{qAndA.toggle_value == '2'}" />
</h:panelGroup>
<h:outputText value="" rendered="#{qAndA.toggle_value == '1' or qAndA.toggle_value == '3'}" />
<h:outputText value="#{qAndA.fail_reason}" rendered="#{qAndA.toggle_value == '2' or qAndA.toggle_value == '4'}" />
</p:column>
也许状态代码存在缺陷:
我宁愿不必修改状态代码,而是添加另一个中间代码,这样的东西可能会起作用:
除修改状态代码外还有其他选择吗?
答案 0 :(得分:0)
那么真正的答案是,如果你不想显示它,那么在加载bean时没有值为2。但你已经知道了。你问的是你的主观性以及你想做的事情。你没有问题,这更像是一个设计问题。说完这里就是一个:
也许你想要有两个条件:
<h:inputTextarea value="#{qAndA.fail_reason}" rendered="#{qAndA.toggle_value == '2' and bean.AnotherCondition}" />
如果你想得到一个@ViewScoped bean来监听你在帖子中谈论的点击(不确定点击是什么)。监听单击并具有布尔属性,一旦单击已注册(可能使用动作侦听器),您可以将其设置为true。这样,textarea只会在点击时显示。