【问题标题】:Required value from bean doesn't change back to "false" [duplicate]bean的必需值不会变回“false”[重复]
【发布时间】:2018-01-12 11:27:12
【问题描述】:

感谢您几个小时前的帮助! 现在,我面临一个新问题... :(

如果选择了特殊单选按钮,则该字段应该是必需的,如果再次更改单选按钮,则该字段不能变回“required=false”。 显示该字段不能为空的错误消息。

这是我的代码:

Bean method:

public void required(AjaxBehaviorEvent event) {
    if (test.isRadioButton()) {
        requirement = true;
    } else {
         requirement = false;
    }
}

----

xhtml:

<h:panelGroup id="buttons" layout="block" styleClass="buttonAbstand" >
    <p:selectOneRadio id="radio" value="#{bean.test.radioButton}" required="true" requiredMessage="#{i18n['error.response']}" >
        <f:selectItem itemValue="#{true}" itemLabel="#{i18n['common.ja']}" />
        <f:selectItem itemValue="#{false}" itemLabel="#{i18n['common.nein']}" />
        <f:ajax execute="panel1" listener="#{bean.required}" render="panel1" />
    </p:selectOneRadio>
</h:panelGroup>

<h:panelGroup id="panel1" >
    <h:panelGroup rendered="#{bean.requirement}" >
        <br />
        <h:outputLabel value="#{i18n['input']}" styleClass="labelFont" />      
        <br />
        <p:inputText id="inputText" value="#{bean.test.input}" styleClass="text" required="#{bean.requirement}" requiredMessage="#{i18n['error.input']}" />
    </h:panelGroup>
</h:panelGroup>

我的 bean 有这些注释: @服务 @ViewScoped @Getter @Setter。

如果您能帮助我,我将非常高兴! 祝你好运!

【问题讨论】:

  • 只需使用requirement = test.isRadioButton() - 在这种情况下你真的不需要if。除此之外,您的问题可能是您在调用函数后没有更新表单(如果这是一个表单),或者您没有正确设置isRadioButton(),我们可以看到涉及该单选按钮的代码吗?跨度>
  • 何时何地应该更新它?您没有在上面的代码中的任何地方这样做,所以一切正常!!!。请学习创建minimal reproducible example
  • 我将带有单选按钮的部分添加到 code-sn-p。
  • 如果您真的想跳过它的执行,为什么在切换期间显式执行 panel1?
  • 如果选择了单选按钮“true”,则应该呈现 panel1 并且应该需要 inputText。我错过了什么吗?我可以通过其他方式实现这一点吗?

标签: validation jsf required


【解决方案1】:

所以,如果有人有同样的问题:

ajax元素只需要执行@this

<f:ajax execute="@this" listener="#{bean.required}" render="panel1" />

【讨论】:

  • 提示:检查所有 >25 个与 JSF (stackoverflow.com/questions/tagged/…) 相关的投票 Q/A。您不需要记住它们的内容,但至少要阅读标题并记住它们的存在。
  • 你可以省略它,它已经是默认值了。您甚至可以省略 listener 并改用 required="#{bean.test.radioButton}Keep it simple, stupid ;)
猜你喜欢
  • 2020-05-14
  • 2018-06-12
  • 1970-01-01
  • 2015-01-17
  • 1970-01-01
  • 2020-06-05
  • 2014-06-06
  • 1970-01-01
  • 2013-12-10
相关资源
最近更新 更多