0

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

2 回答 2

0

ajaxSingle="true"<a4j:support/>为了myCheckbox指出该框时,仅myCheckbox提交处理(一种)和验证。因此,在处理该请求期间,该表单中的所有其他组件以及任何相关的验证错误和消息都会被忽略。

为确保在选中时提交并验证整个表单myCheckBox,设置ajaxSingle="false"或完全删除它

于 2013-09-14T06:42:01.930 回答
0

手册说,该组件rich:message支持“在 Ajax 请求后自动重新渲染<a4j:outputPanel>”。所以这个组件会在每个 AJAX 请求中自动重新呈现。在您可以看到的属性列表中,ajaxRendered它的默认值设置为true.

因此,您可以尝试将其设置为,false但您必须注意在相关的 AJAX 请求期间必须手动重新呈现它(例如,如果您selectA有 AJAX 支持)。

于 2013-09-12T09:37:40.557 回答