gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 14:41:13 24 4
gpt4 key购买 nike

我有一个关于 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 是一个带有枚举 PersonType 的简单 bean,它有两个值:NICE、BAD 和一个名为 reallyBad 的 bool 值。 ListBean 返回列表中的枚举值以填充 selectOneMenu。

基本上,当我选择 BAD 时,会呈现 bool 复选框的面板,我可以在其中勾选它来表示一个人真的很糟糕。如果我愿意,我可以提交表格。问题是当我勾选复选框然后再次选择 NICE 时,即使未呈现该复选框,它仍然被勾选。所以当我提交我的表格时,这个人可能是 NICE 和 reallyBad,这是没有意义的。

我不必再次选择 BAD 来取消选中该框,而是可以在选中 NICE 时将复选框及其输入值重置为 false 的方法吗?我对 JSF 的 ajax 有点菜鸟!谢谢。

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

最佳答案

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

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

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

关于ajax - JSF Ajax 重置以前呈现的输入组件值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15085705/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com