RichFaces:JSF消息使用a4j:support消失

时间:2013-09-12 07:27:07

标签: ajax jsf richfaces jsf-1.2

我正在使用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"/>

2 个答案:

答案 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"或完全删除