Привязать один класс шва к различным контекстным переменным - PullRequest
0 голосов
/ 14 июля 2011

У меня государственный класс.Мне нужно два новых объекта состояния в области видимости сеанса для двух моих контроллеров.Всякий раз, когда создается mycontroller, я хочу, чтобы создаваемое состояние было протестировано.Когда я использую приведенный ниже синтаксис, я получаю один и тот же объект состояния в обоих контроллерах.

Я хочу что-то эквивалентное

session.setAttribute("myFirstControllerState", myScreenStateObj1);
session.setAttribute("mySecondControllerState", myScreenStateObj2);


@SuppressWarnings("serial")
@AutoCreate
@Name("myScreenState")
@Scope(ScopeType.SESSION)

public class MyScreenState implements Serializable {

}

@AutoCreate
@Name("myFirstScreenController")
@Scope(ScopeType.PAGE)
@SuppressWarnings("serial")

public class MyFirstController implements Serializable {
   @In(value="myScreenState")
   @Out(value="myScreenState")
   private MyScreenState myFirstControllerState;
}

@AutoCreate
@Name("mySecondScreenController")
@Scope(ScopeType.PAGE)
@SuppressWarnings("serial")

public class MySecondController implements Serializable {

    @In(value="myScreenState")
    @Out( value="myScreenState")
    private MyScreenState mySecondControllerState;
}

1 Ответ

0 голосов
/ 14 июля 2011

понял это.Добавьте аннотацию @Roles к классу состояния.

@SuppressWarnings("serial")
@AutoCreate
@Name("myScreenState")
@Scope(ScopeType.SESSION)
@Roles({@Role(name="myState1", scope=ScopeType.PAGE),  
    @Role(name="myState2",scope=ScopeType.PAGE)})

public class MyScreenState implements Serializable {

}

В контроллерах просто используйте

private MyScreenState myState1; 
...