我的 xhtml 中有 ap:commandLink,其值在“显示”/“隐藏”之间切换。有什么方法可以从支持 bean 中获取这个 commandlink 的值吗?我的意思是,我想知道命令链接当前显示的值,即显示/隐藏?
问问题
3211 次
2 回答
1
就这一点而言,调用组件仅在ActionEvent
参数中可用:
<h:commandLink id="show" value="Show it" actionListener="#{bean.toggle}" />
<h:commandLink id="hide" value="Hide it" actionListener="#{bean.toggle}" />
和
public void toggle(ActionEvent event) {
UIComponent component = event.getComponent();
String value = (String) component.getAttributes().get("value");
// ...
}
然而,这是一个糟糕的设计。可本地化的文本绝对不应用作业务逻辑的一部分。
相反,要么挂钩组件 ID:
String id = (String) component.getId();
或传递方法参数(需要 EL 2.2 或 JBoss EL):
<h:commandLink id="show" value="Show it" actionListener="#{bean.toggle(true)}" />
<h:commandLink id="hide" value="Hide it" actionListener="#{bean.toggle(false)}" />
和
public void toggle(boolean show) {
this.show = show;
}
甚至直接调用 setter 方法而不需要额外的动作监听器方法:
<h:commandLink id="show" value="Show it" actionListener="#{bean.setShow(true)}" />
<h:commandLink id="hide" value="Hide it" actionListener="#{bean.setShow(false)}" />
于 2013-08-04T12:53:18.510 回答
0
正如@BalusC 建议的那样,您的方法不是一个好的解决方案。但如果您真的想这样做,您可以将组件 ( p:commandLink
) 绑定到您的 backingbean,如在 JSF 中使用绑定属性的优势是什么?. 绑定组件后,您可以value
从p:commandLink
.
于 2013-08-03T21:05:33.340 回答