我们说我有一个简单的方法,就像这样:
public String test()
{
return "hello";
}
现在让我们说我有以下PrimeFace组件:
<p:fieldset styleClass="containers" rendered="#{controller.test()}">
<h2>Testing</h2>
<p:outputLabel for="test" value="Test" />
<p:inputText id="test" />
</p:fieldset>
上面的方法返回&#34;你好&#34;。我想通过将该方法的返回值与我的一个bean的字段进行比较来动态显示和隐藏该fieldSet。例如,在渲染参数上,我想做类似的事情:controller.test()!=&#34;某些变量&#34;这将返回真或假。我允许这样做吗?如果不是,那么这样做的方式是什么?
基本上,目标是通过将方法的返回值与bean属性进行比较来动态显示和隐藏某个容器。
答案 0 :(得分:1)
看起来你误解了rendered
呈现的属性
组件标记使用布尔EL表达式以及渲染 attribute,用于确定是否将呈现该组件。
如果您将检查上述定义,您将知道该属性的确切用途。
您可以在下面看到更多
使用布尔EL表达式的渲染属性表示 组件当前是否可见。该物业是 当您想要隐藏特定用户的组件或基于组件时,此功能非常有用 条件。 render属性的默认值为true。
<h:outputText value=”mapping” rendered=”Boolean EL expression” />
例如,如果购物车不包含任何商品,则不会呈现页面以下部分中的commandLink组件:
<h:commandLink id="check"
...
rendered="#{cart.numberOfItems > 0}">
<h:outputText
value="#{bundle.CartCheck}"/>
</h:commandLink>
根据您的具体问题,您可以这样做
String
变量调用value
现在,在您的测试方法中,您可以添加
public void test(){
value="hello";
}
Bur记得你有调用test()
页面加载方法
现在在你的Xhtml或Jsf或Jsp页面中
rendered="#{controller.value != 'hello'}"
或者更好的方法是创建一个Boolean
变量并完成隐藏的所有魔法并显示组件