JSF PrimeFaces渲染组件

时间:2016-04-01 02:09:36

标签: jsf jsf-2 primefaces

我们说我有一个简单的方法,就像这样:

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属性进行比较来动态显示和隐藏某个容器。

1 个答案:

答案 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
  • 现在为上面的变量
  • 创建get / set方法

现在,在您的测试方法中,您可以添加

public void test(){
       value="hello";
      }

Bur记得你有调用test()页面加载方法

现在在你的Xhtml或Jsf或Jsp页面中

rendered="#{controller.value != 'hello'}"

或者更好的方法是创建一个Boolean变量并完成隐藏的所有魔法并显示组件