jsf - 即使 render=false 也会检查 Action/ActionListener 方法

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

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

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

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

我的问题是,如果我设置 editablefalse因此不要设置属性 editBean或者,我收到错误指出没有处理编辑的方法(例如 java.lang.String 没有属性 xxxxx)。

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

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

最佳答案

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

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

关于jsf - 即使 render=false 也会检查 Action/ActionListener 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18892320/

相关文章:

jsf - Primefaces 数据表行选择事件

jsf - 在 primefaces 自动完成事件中将值重置为 null

java - 如何在java中正确使用ActionListener

java - 如何向 JButton 添加两个操作?小费计算器程序

jsf-2 - 如何检查复合组件中是否存在可选属性

primefaces - 如何将 JSF 复合组件属性设置为 ManagedBean 属性?

java - JSF 验证消息

java - JSF 中文件浏览的替代方案是什么?

java - 如何发出两个形状接触的事件信号? java

jsf-2 - JSF,复合组件 : method call with default attribute value as parameter