richfaces a4j:htmlCommandLink сохранить активный компонент запроса с областью действия

У меня есть bean-компонент с областью запроса, и я использую Richfaces @KeepAlive(ajaxOnly=true), чтобы поддерживать bean-компонент между запросами ajax. На моей странице у меня есть несколько a4j:commandButton, и поддерживающий компонент в порядке, поддерживается между нажатиями кнопок.

Проблема в том, что мне нужно использовать a4j:htmlCommandLink. Когда я нажимаю на ссылку, в бэкэнде создается еще один bean-компонент, но мне нужен тот же bean-компонент, а не новый.

Здесь у меня есть некоторые выдержки из моего кода:

@KeepAlive(ajaxOnly=true)
public class testBean
{
   public void testMethod(ActionEvent ae) {
   ...
   }
   ...
}

<a4j:htmlCommandLink value="Print" target="_blank" 
     actionListener="#{testBean.testMethod}" />

Как я могу сохранить bean-компонент, когда я использую (щелкаю) htmlCommandLink?


person Alina Danila    schedule 26.05.2012    source источник
comment
Вы пытаетесь реализовать эту реализацию с JSF2.0 или JSF1.2? Ваш вопрос помечен jsf-1.2, но я не думаю, что он поддерживает аннотацию KeepAlive? Должен ли он быть помечен как jsf-2.0?   -  person Ahamed Mustafa M    schedule 26.05.2012
comment
Это мой плохой. Я никогда не использовал этот тег для JSF1.2. Извините за мое невежество. Его можно использовать в JSF1.2, как в mkblog.exadel.com/2009/07/view-scope-in-richfaces   -  person Ahamed Mustafa M    schedule 26.05.2012
comment
Может ли обходной путь, например ‹a4j:htmlCommandLink value=Print›‹a4j:support event=onclick disableDefault=true action=testBean.testMethod oncomplete=window.open(url) /› ‹/a4j:htmlCommandLink› помочь?   -  person Ahamed Mustafa M    schedule 27.05.2012


Ответы (1)


Из a4j:htmlCommandLink:

<a4j:htmlCommandLink> работает стандартно <h:commandLink>

Помните, что этот компонент не использует вызов ajax, поэтому поведение будет обычным запросом/ответом серверу. В своем bean-компоненте измените поведение аннотации KeepAlive на ajaxOnly=false, чтобы избежать этих проблем.

person Luiggi Mendoza    schedule 27.05.2012
comment
Может ли помочь обходной путь, например <a4j:htmlCommandLink value="Print"><a4j:support event="onclick" disableDefault="true" action="testBean.testMethod" oncomplete="window.open(url)" /> </a4j:htmlCommandLink>? - person Ahamed Mustafa M; 27.05.2012
comment
Я не пробовал таким образом. Тем не менее, <a4j:htmlCommandLink /> используется для открытия результатов в новом окне, и я использовал только для загрузки файла, потому что это поведение нельзя выполнить с помощью вызова ajax (например, в <a4j:commandButton /> или <a4j:commandLink />), во всех других случаях, когда мне нужна ссылка, Я использую <a4j:commandLink />. - person Luiggi Mendoza; 27.05.2012