Как получить список JSF обновляется при обновлении пользователя - PullRequest
1 голос
/ 23 августа 2011

У меня есть ссылка на команду jsf 1.2

  <h:commandLink id="cars" action="${swapViewHandler.myFunction1}">
  <h:commandLink id="ships" action="${swapViewHandler.myFunction2}">

myFunction1 заполняет swapViewHandler.listA автомобилями и переходит на cars.xhtml

 <navigation-rule>
           <navigation-case>            
                <from-outcome>cars</from-outcome>
                <to-view-id>cars.xhtml</to-view-id>
                <redirect />
            </navigation-case>

myFunction2 заполняет тот же swapViewHandler.listA с кораблямии переходит на ship.xhtml

 <navigation-rule>
           <navigation-case>            
                <from-outcome>ships</from-outcome>
                <to-view-id>hips.xhtml</to-view-id>
                <redirect />
            </navigation-case>

Мне нужно обработать обновление пользователя (F5), чтобы при вызове обновления в cars.xhtml вызывался myFunction1 и заполнял список listA (с автомобилями), а также когда ship.xhtmlобновляется myFunction2 вызывается и заполняет listA (с кораблями)

cars.xhtml и ship.xhtml имеют одинаковую основу (swapviewhandler)

, и они оба содержат

<c:forEach id="tablePicList" items="${swapViewHandler.listA}"  var="entity" varStatus ="status">

1 Ответ

1 голос
/ 23 августа 2011

Каждый вид должен иметь свой собственный компонент поддержки. Поместите bean-компонент в область запроса и выполните работу в его (post) конструкторе. Затем он будет вызываться при каждом новом запросе GET. Э.Г.

public class CarHandler {

    private List<Car> cars;

    @EJB
    private CarService carService;

    @PostConstruct
    public void init() {
        cars = carService.list();
    }

    // ...
}

Не забудьте изменить ссылки команд на обычные выходные ссылки. Это также даст вам дополнительные SEO-баллы, поскольку, очевидно, это касается простой постраничной навигации и закладок / обновляемых GET-запросов.

<h:outputLink value="cars.jsf">cars</h:outputLink>
<h:outputLink value="ships.jsf">ships</h:outputLink>

Если списки зависят от какого-либо параметра запроса или управляемого объекта EJB в области сеанса, то вы должны добавить это в компонент EJB как <managed-property> в faces-config.xml. Он будет доступен внутри метода @PostConstruct (но не в конструкторе!).

...