У меня есть два классаИнъекционного список SessionScoped в бобе SessionScoped
@SessionScoped
public class Department {
private List<Employee> employees;
//Getters and setters
}
и класс сотрудника
@SessionScoped
public class Employee {
private int id;
private String name;
//Getters and setters
}
В моем контроллере, я извлечение данных из уровня службы и пытаюсь заполнить отдел. Вот как выглядит мой контроллер.
public class MyController {
@Inject
private Department department;
}
Я в прошлом столкнулся с проблемой, если я использовал нового ключевого слова для создания экземпляров для CDI управляемых компонентов. Могу ли я просто создать ArrayList с помощью new, создать экземпляры Employee с помощью new, добавить их в список и затем установить список в компоненте отдела. Может ли кто-нибудь рассказать мне, что является правильным способом заполнить список сотрудников (управляемые компоненты) в отделе управляемых компонентов. Помните, что необходимо использовать область охвата. Объем мог бы одинаково хорошо были @ViewAccessScoped
Мое решение
@SessionScoped
public class Department {
@Produces
@SessionScoped
private List<Employee> employees = new ArrayList();
public add(Employee e) {
employees.add(e);
}
//Getters and setters
}
Не совсем уверен, что это правильный способ приблизиться к нему, как и любой другой инъекционного списка сотрудников получили бы эту SessionScoped ArrayList? ?
Я хочу знать правильный способ справиться с этой ситуацией
Общая проблема проектирования заключается в том, что ваши объекты созданы управляемыми бобами. Фактически, только «MyController» является подходящим кандидатом для управления управляемым компонентом. Это будет длинная и несколько субъективная история, которая технически лучше подходит для программистов.se, но вы можете предположить, что этот ответ применим и к вашему делу: http://stackoverflow.com/questions/25431338/why-shouldnt- entity-bean-be-managed-by-jsf-framework/ – BalusC
BalusC, это не сущности JPA, а скорее как упрощенный объект Model, который используется для представления информации, отображаемой в представлении. Вы могли бы зайти так далеко, чтобы сказать, что Объекты, возвращаемые DAO или уровнем сервиса, должны быть переведены в простые объекты модели для представления, если это имеет смысл. – user1299508
Ах, хороший 'ol DTO. Ну, возможно ... Это все еще кажется неправильным. Увы, субъективный вопрос. Попробуйте programers.se или «старомодный» дискуссионный форум. Переполнение стека в качестве сайта Q & A не подходит для обсуждения. – BalusC