使用PrimeFaces渲染属性的替代方法(用于AJAX更新)

时间:2013-12-30 20:54:23

标签: ajax jsf primefaces

我有一个需要动态渲染功能的页面,具体取决于所选的单选按钮 - 我在页面控件上使用呈现的属性,并通过页面的辅助bean管理它 - 当选择一个单选按钮时,页面会被刷新取决于我在托管bean中选择的呈现属性(当然是通过AJAX调用) - 以下是我想要完成的示例。

<h:selectOneRadio valueChangeListener="#{myBean.onValueChange}" 
id="radioButton1"
tabindex="10" 
value="#{myBean.displayTypCd}"
<f:selectItem itemValue="A" itemLabel="Option1" />
<f:selectItem itemValue="B" itemLabel="Option2" />
<f:selectItem itemValue="C" itemLabel="Option3" />
<p:ajax event="click" process="@this"
listener="#{myBean.onValueChange}" 
update=":f:myContainer" />
</h:selectOneRadio>

<p:selectOneMenu rendered="#{myBean.selectMe}"
id="myId" 
effect="highlight"
value="#{myBean.element1}"
<f:selectItems value="#{Collection.element}" />
</p:selectOneMenu>

所以这很好 - 我可以重新渲染我的页面的部分,但有一个闪烁 - 我试图看看是否可以从客户端实现相同,如果有人有任何成功。

由于

1 个答案:

答案 0 :(得分:0)

您无法使用javascript更改呈现的属性。呈现的属性仅供服务器端使用。为了控制客户端的呈现,您可以使用Javascript执行此操作,如下所示

function(){
   var component = document.getElementById('formid:componentid');
   component.style.display = 'none';    -- to hide it
   component.style.display='inline';    -- to render it
}

或者,如果有多个组件,您可以将组件包装在div中,并使用与上面相同的代码作为div。