Jboss Seam/RichFaces:基于JavaScript函数或变量的结果进行渲染
我有一个RichFaces组件,我想在Ajax调用后呈现它,Ajax调用将JavaScript变量设置为true或falseJboss Seam/RichFaces:基于JavaScript函数或变量的结果进行渲染,jboss,richfaces,seam,Jboss,Richfaces,Seam,我有一个RichFaces组件,我想在Ajax调用后呈现它,Ajax调用将JavaScript变量设置为true或false class YourBean { private boolean visible = false; public void makeInvisible() { visible = false; } public void makeVisible() { visible = t
class YourBean {
private boolean visible = false;
public void makeInvisible() {
visible = false;
}
public void makeVisible() {
visible = true;
}
}
当变量为false时,我不希望面板渲染。有没有办法在组件的呈现属性中输入此变量(或任何JS函数调用)的结果?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"/>
<rich:component id="compid" rendered="#{yourBean.visible}" />
<a:commandButton action="#{yourBean.makeInvisible()}" reRender="compid"/>
在页面上
<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"/>
<rich:component id="compid" rendered="#{yourBean.visible}" />
<a:commandButton action="#{yourBean.makeInvisible()}" reRender="compid"/>
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"/>
<rich:component id="compid" rendered="#{yourBean.visible}" />
<a:commandButton action="#{yourBean.makeInvisible()}" reRender="compid"/>
在页面上
<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"/>
<rich:component id="compid" rendered="#{yourBean.visible}" />
<a:commandButton action="#{yourBean.makeInvisible()}" reRender="compid"/>
RichFaces reRender可以采用EL表达式:
reRender="#{bean.componentsToUpdate}"
所以,另一个选项是,您可以在运行时(基于输入)决定是否渲染特定组件 RichFaces重新渲染器可以采用EL表达式:
reRender="#{bean.componentsToUpdate}"
所以,另一个选项是,您可以在运行时(基于输入)决定是否渲染特定组件 选项1:
您可以在ajax请求中使用JavaScript/jQuery从oncomplete属性显示/隐藏
选项2(更好):在后端操作的方法中更改布尔属性值,并在呈现属性中使用其值
选项1:
您可以在ajax请求中使用JavaScript/jQuery从oncomplete属性显示/隐藏
选项2(更好):在后端操作的方法中更改布尔属性值,并在呈现属性中使用其值