如何使用Ajax a4j reRender panelGroup:支持

时间:2012-08-03 16:56:12

标签: ajax jsf richfaces

首先让我说我显然对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开始让我疯了!

提前非常感谢!!!!

1 个答案:

答案 0 :(得分:0)

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

除非您在h:form元素中指定prependId为false,否则表单ID将位于表单中的panelGroup标识之前,以显示您的唯一客户端ID。

form1:noteArea

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