繁体   English   中英

JSF Ajax重置以前呈现的输入组件值?

[英]JSF Ajax reset previously rendered input component values?

我有一个JSF和ajax的小问题(但很重要)。 表格在这里:

 <h:form>
        <h:panelGrid id="pg1" columns="2">

            <h:outputText value="Type: "/>

            <h:selectOneMenu id="selectOne" value="#{personBean.type}">
                <f:selectItems value="#{listBean.personTypes}"/>
                <f:ajax event="valueChange" render="pg2"/>
            </h:selectOneMenu> 

        </h:panelGrid>

        <h:panelGrid id="pg2" columns="2">

            <h:outputText value="Really bad?" rendered="#{personBean.type=='BAD'}"/>

            <h:selectBooleanCheckbox id="checkbox" value="#{personBean.reallyBad}" rendered="#{personBean.type=='BAD'}">
                <f:ajax event="click"/>
            </h:selectBooleanCheckbox>

        </h:panelGrid>

        <h:commandButton value="Ajax Submit" action="#{personBean.printValues}">
            <f:ajax execute="@form"/>
        </h:commandButton>
    </h:form>

PersonBean是一个简单的bean,其枚举PersonType有两个值:NICE,BAD和一个名为reallyBad的布尔值。 ListBean返回列表中的枚举值以填充selectOneMenu。

基本上,当我选择BAD时,会显示布尔复选框的面板,我可以在其中勾选它以表示某个人是真的。 如果我愿意,我可以提交表格。 问题是当我勾选复选框然后再次选择NICE时,即使没有渲染,复选框仍然会被勾选。 因此,当我提交表格时,这个人可能是NICE和真棒,这是没有意义的。

在选择NICE时,我可以将复选框及其输入值重置为false,而不必再次选择BAD来取消选中该框。 我和JSF的ajax有点混蛋! 谢谢。

PS。 我使用commandButtons操作打印提交的两个输入的值以验证结果...

更改菜单时,您需要手动清除该复选框。

<f:ajax listener="#{personBean.setReallyBad(false)}" render="pg2" />

顺便说一句,您在代码中的两个<f:ajax event>值已经是默认值。 只是省略它们。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM