在将disabled / readonly选项true更新为false后,inputtext返回null

时间:2015-03-09 22:12:32

标签: jsf primefaces jsf-2.2

我有一个开关(布尔值)。当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中的禁用选项并正确输入数据?提前感谢..

1 个答案:

答案 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"

另见: