【问题标题】:Action/ActionListener method checked even if rendered=false即使 render=false 也会检查 Action/ActionListener 方法
【发布时间】:2013-09-24 09:34:00
【问题描述】:

我有一个表示表格的复合组件,这取决于editable 属性(我已创建)可能会或可能不会显示编辑行的链接。

编辑链接的类型为<h:commandLink>,并有actionListeners 指向支持bean 中的方法。当我希望表格可编辑时,用于处理编辑的支持 bean 以 <cc:attribute name="editBean"... /> 的形式提供,类似于属性 editable

如果我不需要表格可编辑,我将editable 属性设置为false,并且链接rendered 属性也设置为false。

我的问题是,如果我将editable 设置为false,因此也不设置属性editBean,我会收到错误消息,指出没有处理编辑的方法(例如java.lang.String没有属性 xxxxx)。

我曾希望,由于链接设置为根本不呈现,action/actionListener 中指定的内容将被忽略。对我来说,首先检查rendered 属性,然后如果它设置为true,检查其他属性是合乎逻辑的。

所以,我的问题是:为什么它会这样工作,是否有一种优雅的方式来处理这种情况?

【问题讨论】:

    标签: jsf actionlistener composite-component jsf-2.2 rendered-attribute


    【解决方案1】:

    使用 JSTL <c:if> 有条件地在 JSF 组件树中构建组件,而不是 rendered 属性来有条件地呈现 HTML 输出(这是您使用的是 JSF 2.2,否则我会明确提到这需要最低 Mojarra 2.1.18 以避免损坏视图状态)。

    <c:if test="#{cc.attrs.editable}">
        <h:commandLink ... />
    </c:if>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      • 2017-03-29
      • 1970-01-01
      相关资源
      最近更新 更多