Инициализируйте переменную в базовом компоненте (для использования в области видимости) - PullRequest
0 голосов
/ 24 ноября 2011

У меня есть резервный компонент, управляемый Spring, и его область действия - view, и у меня есть страница пользователей, на которой отображаются все пользователи, и я хочу передать в datatable переменную list of users, и я хочу инициализировать эту переменную при созданиистраницы (и используйте эту переменную, пока я все еще на странице), и я запутался в том, как лучше всего инициализировать список пользователей, у меня на уме 3 способа:

Инициализация через constructor :

@Component("user")
@Scope("view")
public class MyBean {

private List<User> usersList;


public MyBean() {

   usersList=userService.getUsers();

}

}

Инициализировать через событие preRender :

@Component("user")
@Scope("view")
public class MyBean {

private List<User> usersList;


public void preRender(ComponentSystemEvent event){
  if(usersList!=null)
   usersList=userService.getUsers();
}

}

Инициализировать через @ PostConstruct

@Component("user")
@Scope("view")
public class MyBean {

private List<User> usersList;

@PostConstruct
public void init() {

   usersList=userService.getUsers();

}


}

, пожалуйста, посоветуйте, каков наилучший способ инициализации в случае области видимости, я хочу инициализировать переменную один раз и использовать точно такую ​​же переменную в таблице данных, пока я все еще на той же странице.

1 Ответ

1 голос
/ 24 ноября 2011

Инициализация в конструкторе возможна, только если userService не является внедренной зависимостью. То есть когда вы создаете его вручную вместо использования @EJB, @Inject или @ManagedProperty или любого другого Spring.

Если userService действительно является внедренной зависимостью, то @PostConstruct - единственный правильный путь, потому что зависимость вводится после построения и, таким образом, в конструкторе будет null.

Метод preRender вызывается перед каждым ответом рендеринга. Он не вызывается только один раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...