Прежде всего, иметь отдельный мод для каждого объекта не очень хорошая идея.Вы можете достичь (что вы пытаетесь):
1).Добавление свойства (с его геттером и сеттером) в bean для выбранного объекта.
2).Поместите один модальный (<p:dialog
с id="modal"
и widgetVar="modal"
атрибутами) снаружи ui:repeat
для отображения данных из выбранного объекта.
3).Установите выбранный объект по нажатию на ссылку просмотра, обновления и отображения модального состояния, используя:
<p:commandLink styleClass="btn btn-success" process="@this" update="modal"
onclick="PF('modal').show();">
<h:outputText value="View" />
<f:setPropertyActionListener
value="#{teacher}" target="#{ViewTeacher.selectedTeacher}" />
</p:commandLink>
Здесь f:setPropertyActionListener
будет устанавливать выбранный вами модальный компонент в бобе и, таким образом, он станет доступен в вашем слушателе действий.
Обновление: измените код следующим образом:
<ui:repeat value="#{ViewTeacher.teacherList}" var="teacher" varStatus="status">
<h:panelGroup layout="block" styleClass="name">
<p>#{teacher.name}</p>
</h:panelGroup>
<p:commandLink styleClass="btn btn-success" process="@this" update="modal"
oncomplete="PF('modal').show();">
<h:outputText value="view" />
<f:setPropertyActionListener
value="#{teacher}" target="#{ViewTeacher.selectedTeacher}" />
</p:commandLink>
</ui:repeat>
<p:dialog id="modal" widgetVar="modal" header="Edit Teacher" modal="true"
showEffect="fade" hideEffect="fade" resizable="false" closeOnEscape="true"
styleClass="teachers-dialog">
<h:outputText styleClass="description" value="#{ViewTeacher.selectedTeacher.name}" />
<br />
<br />
<br />
students
<h:selectOneMenu value="#{ViewTeacher.selectedStudentId}" class="form-control">
<f:selectItems value="#{ViewTeacher.selectedTeacher.students}"
var="s" itemValue="#{s.id}" itemLabel="#{s.name}" />
</h:selectOneMenu>
classes
<h:selectOneMenu value="#{ViewTeacher.selectedClassId}" class="form-control">
<f:selectItems value="#{ViewTeacher.selectedTeacher.classes}"
var="c" itemValue="#{c.id}" itemLabel="#{c.name}" />
</h:selectOneMenu>
<br />
<h:panelGroup layout="block" styleClass="form-group">
<p:spinner value="#{ViewTeacher.spinnerValue}" min="1" max="10" />
</h:panelGroup>
<h:commandButton id="submitButton" styleClass="btn btn-success" value="ADD">
</h:commandButton>
</p:dialog>
Где selectedTeacher
, selectedStudentId
, selectedClassId
, spinnerValue
- свойства из вашего ViewTeacher
боб.