【问题标题】:How to create commandlink programmatically如何以编程方式创建命令链接
【发布时间】:2010-03-16 22:58:32
【问题描述】:

我们有一个基于 seam/richfaces 的系统。 在这个网页中,表格是从动态上下文中呈现的(来自多个不同的数据源,并且每个数据源都使用不同的布局来表示基本相同的现实世界概念)。结果,这个表被绑定到一个 bean,它的列/布局是从这个 bean 生成的。

现在我需要在特定列上添加命令链接,相当于

<a4j:commandLink value="#{actBean.Ids}" action="#{actBean.genDetails}">
    <f:setPropertyActionListener target="#{actBean.Ref}" value="#{cont}"/>
</a4j:commandLink>

在 JSF 页面中。

表被绑定到一个托管 bean

HtmlDataTable dataTable = new HtmlDataTable();
HtmlColumn column = new Column();
//some code to setup column name, value etcs
dataTable.getChildren().add(column);
//What do I do here to bind a commandlink with a property action 
//listener to column?

我的问题是,如何以编程方式执行此操作?

谢谢!

【问题讨论】:

  • @John @BalusC 或 @Bozho 将向您展示如何操作。您必须在托管 bean 中绑定您的 JSF 组件才能实现您的目标。
  • @Arthur 我实际上是根据 BalusC 的教程完成的。只是我找不到合适的方法来绑定 commandlink 和 propertyActionListener 对象(在 HtmlColumn 对象上),在richfaces/jsf api中找不到它们(或者我只是想念它们)。
  • 冷静点。 @Bozho 在线。他会告诉你如何
  • 这里是半夜,所以我没完全理解这个问题,有点困。早上会去看看。在此之前,请提供一些您目前仅描述的其他代码
  • 谢谢,我添加了更多代码。整个事情可能太详细了。我希望我添加的部分足以说明我遇到的问题。

标签: jsf seam richfaces


【解决方案1】:
HtmlAjaxCommandLink commandLink = new HtmlAjaxCommandLink();
commandLink.addActionListener(new SetPropertyActionListener(target, value));
column.getChildren().add(commandLink);

其中targetvalueValueExpression。这些可以通过以下方式创建:

ExpressionFactory.getInstance().createValueExpression(ctx, expression, expectedType)

所需的ELContext可以通过FacesContext.getCurrentContext().getELContext()获得

【讨论】:

    猜你喜欢
    • 2018-06-14
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2012-05-12
    • 2017-06-08
    • 1970-01-01
    • 2012-04-25
    相关资源
    最近更新 更多