我有以下问题:我需要从“列表页面”重定向到详细信息页面,但我需要列表中的id。此示例中的“record”是rich:dataTable的var属性。首先我想到了这个:
<a4j:commandLink id="detailsLink" value="show details" execute="@this" action="/customerDetails?faces-redirect=true&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&cusid=120" />
我找到了解决方案,但我不确定这是否正确:
在customerBean中,我做了以下内容:
public String editCustomer(long customerId)
{
edit(customerId);
return "/customerDetails?faces-redirect=true";
}
但我不认为这是通过Rich Faces发送和接收参数的常用方法。可能有更好的解决方案吗?
答案 0 :(得分:1)
<a4j:commandLink>
在您需要正常的GET请求时发送ajax POST请求。请改用<h:link>
。
<h:link value="show details" outcome="/customerDetails?cusid=120" />