gpt4 book ai didi

jsf - value not updated in bean

转载 作者:行者123 更新时间:2023-12-04 05:21:52 26 4
gpt4 key购买 nike

<h:form>
<h:messages />
<h:selectOneRadio value="#{bean.selectedValue}" id="selectId"
layout="pageDirection">
<f:selectItems value="#{bean.values}" var="value"
itemLabel="#{value.text}" itemValue="{value}" />
</h:selectOneRadio>
<h:commandButton value="Press Me" >
<f:ajax listener="#{bean.btn_action}" execute="@form"/>
</h:commandButton>
</h:form>

下面是代码细节。
  • Bean 是 @ViewScope 中的支持 bean。
  • bean.values 是 @RequestScope 中另一个托管 bean 的列表。
  • 单选按钮值绑定(bind)到支持 bean 中的上述 @RequestScope 托管 bean。 #{bean.selectedValue}
  • selectedValue 是对具有 getter/setter 的支持 bean 中的对象的引用。

  • 问题。
    - 当 execute=@form 添加到 ajax 标签时,甚至不会调用监听器。
    - 在执行-@form 之后,监听器被调用 但是单选按钮选择的值不会在支持 bean 中更新。
    - 当我调试 getter 时,总是调用 selectedValue 而不是 setter。

    任何帮助将不胜感激。
    谢谢。

    最佳答案

    假设 itemValue="{value}"只是一个粗心的错字,并且您从未注意服务器日志,那么如果 #{value},此构造将静默失败表示非标准类型,您没有 Converter对于该类型或未实现该类型的 equals()方法正确。

    第一步是添加 render="@form"<f:ajax> ,所以 <h:messages>也得到更新,这样您就不需要查看服务器日志中的转换/验证错误。

    <f:ajax execute="@form" listener="#{bean.btn_action}" render="@form" />

    第二步是根据显示的转换/验证错误解决问题。很可能您有一个转换错误“空转换器”,或者您可能已经有一个,但是您收到了一个验证错误“值无效”。

    以下答案详细回答了这两个潜在问题:
  • How to populate options of h:selectOneMenu from database?
  • Using JSF Converter in h:selectOneMenu results in Validation Error: Value not valid
  • 关于jsf - <h :selectOneRadio> value not updated in bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13597168/

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