【发布时间】: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