【问题标题】:JSF PrimeFaces rendering componentsJSF PrimeFaces 渲染组件
【发布时间】:2016-04-01 02:09:35
【问题描述】:

假设我有一个简单的方法,如下所示:

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

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    看来你误会了rendered

    渲染的属性

    组件标签使用布尔 EL 表达式,以及呈现的 属性,判断组件是否会被渲染。

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

    你可以在下面看到更多

    使用布尔 EL 表达式的渲染属性表示 组件当前是否可见。该物业是 当您想为特定用户隐藏组件或基于 健康)状况。渲染属性的默认值为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";
          }
    

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

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

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

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

    【讨论】:

    • 它实际上不起作用(我认为它会)但我认为是因为我需要使用 .equals 方法。如何使用 equals 方法而不是 == 或 !=?
    • 它应该可以工作...仅供参考,您可以使用rendered="#{controller.value.equal('hello')}"
    猜你喜欢
    • 2011-04-14
    • 2020-03-01
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-06
    • 2011-07-07
    • 2011-09-03
    • 2011-12-12
    相关资源
    最近更新 更多