我有一个我希望在Ajax调用后呈现的RichFaces组件,它将JavaScript变量设置为true或false。
当变量为false时,我不希望面板呈现。有没有办法在组件的呈现属性中输入此变量(或任何JS函数调用)的结果?
答案 0 :(得分:2)
Richfaces在服务器端呈现组件。所以你必须通过你的 服务器端的参数。有一些方法可以实现这一目标。 在页面上创建一个隐藏的输入并将其链接到bean中的标志。像,
class YourBean {
private boolean visible = false;
//getter,setter
}
在页面上,
<h:selectBooleanCheckbox id="hiddeninput" style="visibility:hidden"
value="#{yourBean.visible}"/>
<rich:component id="compid" rendered="#{yourBean.visible}" />
<a:commandButton onclick="document.getElementById('hiddeninput').checked=true"
reRender="compid"/>
或者创建两个将flag设置为true或false的方法。
class YourBean {
private boolean visible = false;
public void makeInvisible() {
visible = false;
}
public void makeVisible() {
visible = true;
}
}
在页面上,
<rich:component id="compid" rendered="#{yourBean.visible}" />
<a:commandButton action="#{yourBean.makeInvisible()}" reRender="compid"/>
答案 1 :(得分:1)
选项1: 您可以在ajax请求的oncomplete属性中使用JavaScript / jQuery显示/隐藏。
选项2(更好):在后端动作的方法中更改布尔属性值,并在渲染属性中使用其值。
答案 2 :(得分:0)
RichFaces reRender可以采用EL表达式:
reRender="#{bean.componentsToUpdate}"
因此,另一个选项是,您可以在运行时(基于输入)决定是否呈现特定组件。