首页 文章

JSF PrimeFaces渲染组件

提问于
浏览
0

假设我有一个简单的方法,像这样:

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>

上面的方法返回“hello” . 我想通过将该方法的返回值与我的一个bean的字段进行比较来动态显示和隐藏该fieldSet . 例如,在渲染参数上,我想做类似的事情:controller.test()!=“some variable”,它会返回true或false . 我允许这样做吗?如果没有,这样做的方式是什么?

基本上,目标是通过将方法的返回值与bean属性进行比较来动态显示和隐藏某个容器 .

1 回答

  • 1

    看起来你误解了 rendered

    The rendered Attribute

    组件标记使用布尔EL表达式以及呈现的属性来确定是否将呈现组件 .

    如果您将检查上面的定义,您将知道该属性的确切用途 .

    你可以在下面看到更多

    使用布尔EL表达式的呈现属性指示组件当前是否可见 . 当您想要隐藏特定用户的组件或基于条件时,该属性非常有用 . rendered属性的默认值为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 变量并完成隐藏和显示组件的所有魔力

相关问题