如何从支持 bean 获取命令链接值(显示名称)?

Posted

技术标签:

【中文标题】如何从支持 bean 获取命令链接值(显示名称)?【英文标题】:How to get command link value(display name) from backing bean? 【发布时间】:2013-08-03 21:32:06 【问题描述】:

我的 xhtml 中有一个 p:commandLink,其值在“显示”/“隐藏”之间切换。 有什么方法可以从支持 bean 中获取这个 commandlink 的值吗? 我的意思是,我想知道命令链接当前显示的是什么值,即显示/隐藏?

【问题讨论】:

相反,您可以在 commandLink 上的方法调用中传递参数。 如果您需要本地化您的 web 应用程序并因此提供不同语言的按钮标签,例如 value="#msg['button.label']",该怎么办?需要知道按钮的值绝对不是一个好的解决方案,因为您还必须考虑所有这些本地化值。我建议重新表述你的问题,而不是询问如果多个按钮调用相同的方法,如何区分按下的按钮。 @BalusC-我同意你的观点,你已经正确理解了我的要求。从我正在调用的命令链接和 actionListener 方法中,我想区分它当前是否显示“显示”/“隐藏” .因为基于此,我必须向用户显示一个弹出对话框。例如如果是“显示”,我希望对话框出现。但是,如果“隐藏”,我只想绕过调用此对话框的 bean 代码。仅供参考,我正在从后端显示对话框。是否可以假设存在没有其他语言支持吗? @PankajKathiriya-您能提供一个例子吗?例如,在我的 actionlistener 方法中,当 commandLink 读取为“Show”时,我想传递“Show”? 【参考方案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");
    // ...

但是,这是一个糟糕的设计。可本地化的文本绝对不应用作业务逻辑的一部分。

相反,either 挂钩组件 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)" />

【讨论】:

【参考方案2】:

正如@BalusC 建议的那样,您的方法不是一个好的解决方案。但是,如果您真的想这样做,您可以将组件 (p:commandLink) 绑定到您的 backingbean,如 What is the advantages of using binding attribute in JSF? 中所示。 组件绑定后,可以从p:commandLink访问value属性。

【讨论】:

以上是关于如何从支持 bean 获取命令链接值(显示名称)?的主要内容,如果未能解决你的问题,请参考以下文章

如果名称包含点,如何获取 JSON 对象值?

如何从复杂的 JSON 对象中获取值?

如何从 React Native Picker 获取值和标签名称?

如何在 JSF 的支持 bean 中获取 Unicode 数据

如何从列表“StandardListItem”中的 JSON 文件中的元素“名称”中获取所有值?

JSF 命令按钮