【问题标题】:JSF: rendered attributeJSF:渲染属性
【发布时间】:2011-09-09 23:02:29
【问题描述】:

我有一个具有渲染属性的 panelGroup。为什么即使将 render 属性设置为 false,也会调用 panelGroup 中的组件值?我是否误解了这里的渲染属性?

我想要做的是:我在 panelGroup 之前有一个 selectManyCheckbox,只有当用户在 selectManyCheckbox 中选择了值并点击按钮时,才应该执行 panelGroup 中的所有内容。这不会像这样工作,因为 panelGroup 中的组件取决于用户必须在 selectManyCheckbox 中选择的值。

<h:selectManyCheckbox /> // for the user to choose
<h:commandButton /> // to render the panelGroup

<h:panelGroup rendered="#{someBean.render}">
  <h:dataTable value="#{someOtherBean.loadSomething(someObject)}" var="item">
    // ...
  </h:dataTable>         
</h:panelGroup>

【问题讨论】:

    标签: jsf


    【解决方案1】:

    rendered 属性仅说明是否应在客户端 DOM 上呈现以下组件。这些组件仍将遵循 JSF 生命周期事件,并将维护托管 bean 的值。

    编辑:响应解决方法的请求:

    我可以看到解决此问题的最简单方法,如果您不希望 value 属性调用 bean 方法,那么只需将逻辑包装在您的 bean 方法中,并对渲染条件进行 if 检查。

    public void loadSomething(Object someObject) {
      if (render()) {
        //Do loadSomething logic
      }
    }
    

    【讨论】:

    • 当render=false时,组件会发送到客户端然后不显示还是根本不发送?
    猜你喜欢
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    • 2011-08-26
    • 1970-01-01
    • 2015-07-22
    • 2011-06-10
    • 1970-01-01
    • 2011-04-17
    相关资源
    最近更新 更多