Если я понимаю вас правильно, вы хотите выбрать элемент внутри одного вида и отобразить его SubItems в следующем представлении. если это так, то есть seviral способы acheave этого, здесь я покажу вам путь, основанный на вашей концепции/код выше, так что позволяет предположить следующее:
listMedicalJourneys.xhtml
мнение, где вы выбираете пункт
listAffectedEmployees.xhtml
вид Где вы показываете подразделы предварительно выбранного пункта
и я предполагаю, что у вас есть для каждого ракурса своего собственного контроллера/ManagedBean,
так назовём первый medicalJourneysManager
и на второй взгляд affectedEmployeesManager
, оба requestScoped
Фасоль
medicalJourneysManager
в вашем случае «Выбор Methode» действия должны получить только выбранные ItemId, и передать этот идентификатор, выбранный на следующую страницу. Следующая страница Контроллер должен затем загрузить список подтипов. Поскольку requestScoped Bean доступен только во время этого единственного запроса, и как только вы будете перемещаться в любом месте, ваш компонент будет повторно инициализирован, а это означает, что загруженные данные будут потеряны в этот момент.
так в вашем medicalJourneysManager
определить некоторые ActionMethode как это:
//JSF 2.+
public String selectMedicalJourny(int medicalJourneyId) {
// do what ever you want before redirect, i.e. any validations, ...etc if required
return "listAffectedEmployees.faces?faces-redirect=true&medicalJourneyId="+medicalJourneyId;
}
это будет перенаправить вас к следующему View, где вы отобразить список AffectedEmployees
Этот новый взгляд нуждается его Controller "affectedEmployeesManager
"для загрузки списка affectedEmployees.
так в это удалось Bean сделать что-то вроде этого:
@PostConstruct
private void init(){
try{
String medicalJourneyId = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("medicalJourneyId");
// now do whatever you want with it, load its subNodes/affectedEmployeesList, ...etc
MedicalJourney m = medicalJourneyBean.getMedicalJourneyById(medicalJourneyId);
setMesList(new ArrayList<MedicalJourneyEmployeeService>(m.getMedicalJourneyEmployeeServices()));
setSelectedMedicalJourney(m);
}catch(Exception e){
e.printStackTrace();
}
}
более простая альтернатива commandLink использует прямую связь с этим парам без каких-либо команд действий.
вот полезный link.
Спасибо Рами, я решил проблему со второй альтернативой. – sabron01