我有一个代表表格的复合组件,它取决于 editable
属性(我创建的)可能会也可能不会显示编辑行的链接。
编辑链接的类型为 <h:commandLink>
并有actionListener
s 指向支持 bean 中的方法。用于处理编辑的支持 bean 作为 <cc:attribute name="editBean"... />
提供。就像属性 editable
,当我希望表格可编辑时。
如果我不需要表格可编辑,我设置 editable
属性为false
和链接 rendered
属性也被设置为 false。
我的问题是,如果我设置 editable
至false
因此不要设置属性 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/