当前位置: 首页 > 知识库问答 >
问题:

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

欧阳昊阳
2023-03-14

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

共有2个答案

匡安宜
2023-03-14

正如@BalusC所说,你的方法不是一个好的解决方案。但是,如果您真的想这样做,可以将组件(p:commandLink)绑定到backingbean,如在JSF?中使用binding属性的优点所示?。绑定组件后,可以从p:commandLink访问值属性。

叶越
2023-03-14

就此而言,调用组件仅在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)}" />
 类似资料:
  • 问题内容: 我正在尝试从“ a href”属性获取链接 我在做什么: 我正在获取具有“ dl_link 1”类的元素,但无法获取它的链接,字符串为空? 问题答案: 您需要使用实际的属性名称进行调用。更换: 与:

  • 问题内容: 但我想获取用户ID?我怎么才能得到它? 问题答案: 您需要。 SqlDataReader 提供一种从SQL Server数据库中读取行的仅前向流的方法。 样本 更多信息 MSDN-SqlDataReader类

  • 问题内容: 我试图确定哪些应用程序正在使用某些端口并获取。 此命令返回以下输出: 我只需要获取结果的进程名称和PID,即java 3591。 最好的方法是什么? 谢谢。 问题答案: 尝试 要么

  • 问题内容: 我试图用HTML,jQuery和JavaScript进行一些简单的数学计算,所以我想从用户那里得到输入。 对于输入,我尝试这样做: 但是我无法执行任何类型的计算,因为这些值是字符串。 请任何人告诉我如何将它们转换为整数。 问题答案: parseInt() 或 parseFloat() 是JavaScript中的函数,可以帮助您将值分别转换为整数或浮点数。 句法: string :要解析

  • 问题内容: 如何获取命令提示符的输出,这意味着我已经打开了这样的命令提示符。 我无法获得像这样的cmd输出 那么如何获得命令提示符输出? 问题答案: 这不是Java问题。基本上,您正在执行的是Java(Java Main Process A),然后从中启动另一个进程(Windows CMD B)。很好,您可以在Java(A)中获得此过程(B)的输入/输出流。但是,此过程(B)使用其自己的标准输入/

  • 北京优锘科技有限公司 地址:北京市朝阳区酒仙桥路10号恒通国际商务园B23A 联系电话:400-666-9832 业务咨询:info@uino.com 售后服务:thingjs@uino.com