Как правильно настроить a4j: commandLink? - PullRequest
0 голосов
/ 06 марта 2012

У меня следующая проблема: мне нужно перенаправить со «страницы списка» на страницу с подробностями, но мне нужен идентификатор из списка.«record» в этом примере - это атрибут var объекта rich: dataTable.Прежде всего я подумал об этом:

<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.Может быть, есть лучшее решение?

Ответы [ 2 ]

1 голос
/ 06 марта 2012

<a4j:commandLink> отправляет запрос POST ajax, в то время как вам нужен обычный запрос GET. Вместо этого используйте <h:link>.

<h:link value="show details" outcome="/customerDetails?cusid=120" />
0 голосов
/ 27 августа 2015

Вот лучший способ сделать это.Приведенный пример передает 2 параметра.Вы можете иметь более одного.Просто используйте атрибут assignTo и атрибут value.Надеюсь, что это отвечает на ваш вопрос.

<a4j:commandLink action="#{myBackingBean.myAction}">
    <a4j:param name="jobIdParam" value="#{job.jobNumber}"
        assignTo="#{myBackingBean.jobId}" />
    <a4j:param name="isDisplayedParam" value="true"
        assignTo="#{myBackingBean.displayed}"/>
</a4j:commandLink>
...