如何正确参数化a4j:commandLink?

时间:2012-03-06 10:53:54

标签: jsf richfaces el

我有以下问题:我需要从“列表页面”重定向到详细信息页面,但我需要列表中的id。此示例中的“record”是rich:dataTable的var属性。首先我想到了这个:

<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true&amp;cusid=#{record.id}" />

但这是无效的语法,所以我试过这样的事情:

<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true">
<f:attribute name="cusid" value="#{record.id}"/>
</a4j:commandLink>

(我甚至试过f:param) 在目标页面上,我试图通过...

接收值
<f:metadata>
<f:viewParam required="false" name="cusid" value="#{customerBean.editCustomer}"/>
</f:metadata>

基本上f:元数据有效,因为当我使用以下硬编码参数尝试它时,我会收到它的值:

<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true&amp;cusid=120" />

我找到了解决方案,但我不确定这是否正确:

在customerBean中,我做了以下内容:

public String editCustomer(long customerId)
{

    edit(customerId);
    return "/customerDetails?faces-redirect=true";
}

但我不认为这是通过Rich Faces发送和接收参数的常用方法。可能有更好的解决方案吗?

1 个答案:

答案 0 :(得分:1)

<a4j:commandLink>在您需要正常的GET请求时发送ajax POST请求。请改用<h:link>

<h:link value="show details" outcome="/customerDetails?cusid=120" />