1

首先让我说我显然对 ajax / jsf 很陌生,所以请原谅。首先,我一直在阅读一些richFaces 文档,但仍然不清楚“render”和“reRender”之间的区别。

我想要实现的是一个带有两个“区域”的页面,默认情况下这些区域是隐藏/不呈现的。当用户选择一个时,<h:selectBooleanCheckbox>这将触发与此 BooleanCheckbox 对应的“区域”的呈现。这似乎比它应该做的工作要多得多,也许我错过了一些非常基本的东西。

这是我的代码。

<h:outputLabel for="saveNote" value="Create Note "/>            
<h:selectBooleanCheckbox id="saveNote" value="#{noteController.saveNote}" immediate="true" >            
    <a4j:support event="onchange" reRender="noteArea"/>                         
</h:selectBooleanCheckbox>
<h:outputLabel for="sendEmail" value="Send Email "/>    
<h:selectBooleanCheckbox id="sendEmail" value="#{noteController.sendEmail}" immediate="true">
    <a4j:support event="onchange" reRender="emailArea"/>                                                        
</h:selectBooleanCheckbox>

这是嵌套在一个<h:form>

我试图控制渲染的“区域”如下......

<h:panelGroup id="noteArea" rendered="#{noteController.saveNote}" layout="block"> 

这也嵌套在h:form<h:selectBooleanCheckbox>

请帮忙,ajax 开始让我发疯了!

提前非常感谢!!!!

4

1 回答 1

0

reRender 属性将在回发时呈现许多客户端 ID。这应该是客户端 ID,而不是noteArea.

除非在您的h:form元素中指定prependId为 false,否则表单 id 将位于表单中的 panelGroup id 之前,以形成您唯一的客户 id。

form1:noteArea

此外,我认为您不想immediate在复选框上设置为 true。

于 2012-08-03T17:10:44.547 回答