我有一个开关(布尔值)。当switch为true时,inputtext disabled选项为true。当switch为false时,inputtext disabled选项为false,因此我可以输入数据。但是这个数据返回null。
<h:form id="form">
<p:inputSwitch value="#{switchMB.isTrue}" onLabel="True"
offLabel="False">
<p:ajax update="inputText" />
</p:inputSwitch>
<p:inputText id="inputText" value="#{switchMB.inputTextValue}"
disabled="#{switchMB.isTrue}" />
<p:commandButton action="#{switchMB.addValue}"
update=":form" value="Add"></p:commandButton>
</h:form>
当我在inputText中输入数据时,此数据始终返回null。如何解决此问题?如何更新inputText中的禁用选项并正确输入数据?提前感谢..
答案 0 :(得分:2)
作为防范篡改/被黑客入侵请求的一部分,在表单提交的应用请求值阶段,disabled
属性也进行了评估。因此,基本上您需要确保#{switchMB.isTrue}
的计算结果与呈现表单时的结果完全相同。最简单的方法是将#{switchMB}
托管bean放在视图范围中而不是请求范围中。
@Named // Or @ManagedBean
@ViewScoped // Watch out that you import from the right package!
public class SwitchMB {}
即,当您将其放入请求范围时,所有属性都将重置为其默认值,在您的特定情况下,显然会触发disabled="true"
。