我正在使用richfaces实现取消JSF 1.2。 我想要做的是在选中selectBooleanCheckbox时启用selectOneRadio。 它到目前为止工作。但是有一个奇怪的效果:
考虑以下情况: 字段selectA在其rich:message标记中显示错误消息。 检查myCheckbox后,selectOneRadio selectToReRender已启用,但页面上所有富消息标签中的错误消息消失。
感谢您的帮助。
此致
最高
<!-- Field which shows error-Message if vlaue was not entered -->
<h:selectOneRadio id="selectA"
value ="#{controller.entity.valueA}"
required="true"
label="#{text['selectA.label']}"
layout="pageDirection">
<f:selectItem itemValue="#{true}" itemLabel="Yes" />
<f:selectItem itemValue="#{false}" itemLabel="No"/>
</h:selectOneRadio>
<rich:message for="selectA"/>
<!-- Field which enables selectOneRadio selectToReRender if it is checked -->
<h:selectBooleanCheckbox id="myCheckbox"
label="#{text['myCheckbox.label']}"
value="#{controller.entity.valueB}"
required="false">
<a4j:support event="onclick" ajaxSingle="true" reRender="selectToReRender"/>
</h:selectBooleanCheckbox>
<rich:message for="myCheckbox"/>
<!-- Field which is disabled until myCheckbox is checked.
Function getSelectToReRenderDisabled() of controller checks the boolean value of controller.entity.valueB -->
<h:selectOneRadio id="selectToReRender"
value="#{controller.entity.valueC}"
label="#{text['selectToReRender.label']}"
layout="pageDirection"
required="true"
disabled="#{controller.selectToReRenderDisabled}">
<f:selectItems value="#{MySelectItems.myEntitySelectItems}"
var="" />
</h:selectOneRadio>
<rich:message for="selectToReRender"/>
答案 0 :(得分:0)
手册说,组件rich:message
支持“在没有<a4j:outputPanel>
帮助的情况下在Ajax请求之后自动重新呈现”。
因此,在每个AJAX请求中自动重新呈现此组件。在您可以看到的属性列表中,ajaxRendered
将其默认值设置为true
。
所以你可以尝试将它设置为false
但是你必须要知道它必须在有关的AJAX请求期间手动重新呈现(例如,如果你的selectA
具有AJAX支持)。
答案 1 :(得分:0)
ajaxSingle="true"
<a4j:support/>
中的myCheckbox
表示当选中该复选框时,仅提交myCheckbox
进行处理(排序)和验证。因此,在处理该请求期间,将忽略该表单中的所有其他组件以及任何关联的验证错误和消息。
要确保在选择myCheckBox
时提交并验证整个表单,请设置ajaxSingle="false"
或完全删除