我的xhtml中有一个p:commandLink,其值在“显示”/“隐藏”之间切换。 有什么方法可以从支持bean获取此commandlink的值? 我的意思是,我想知道命令链接当前显示的值是什么,即显示/隐藏?
答案 0 :(得分: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 or JBoss EL required):
<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)}" />
答案 1 :(得分:0)
正如@BalusC建议的那样,你的方法并不是一个好的解决方案。但是如果你真的想这样做,你可以将组件(p:commandLink
)绑定到你的backbean,如What is the advantages of using binding attribute in JSF?中所示。
绑定组件后,您可以从value
。
p:commandLink
属性