Primefaces を使用して JSF でエンティティの変更を実装しようとしています。
ユーザーをリストする私の主なビューは次のとおりです。
<p:growl id="growlEditUnit" showDetail="true" life="12000" />
<p:dialog id="dialogEditUnit" header="Edit Unit" widgetVar="editUnitDialog" showEffect="fade" hideEffect="fade" resizable="false" >
<ui:include src="editUnit.xhtml" />
</p:dialog>
<h:form id="form2">
<p:dataTable id="units" var="unit" value="#{unitController.unitsOfLoggedInUser}" >
<f:facet name="header">
Click Edit or Delete after selecting a unit to modify or remove it
</f:facet>
<p:column headerText="Code">
#{unit.unitCode}
</p:column>
<p:column headerText="Name">
#{unit.unitName}
</p:column>
<p:column headerText="Semester" >
#{unit.semester}
</p:column>
<p:column headerText="Academic Year">
#{unit.academicYear}
</p:column>
<p:column headerText="Twitter Username">
#{unit.twitterUsername}
</p:column>
<p:column headerText="Actions">
<p:commandButton id="editButton" value="Edit" action="#{unitController.setCurrent(unit)}" update=":dialogEditUnit" oncomplete"editUnitDialog.show()" />
</p:column>
</p:dataTable>
</h:form>
このビューでは、すべてのデータが正しく一覧表示されます。ただし、現在を押すと、クリックされたボタンに基づいて、管理対象 Bean の現在の属性 (以下にリストされているコード) を単位で設定することが目的です。この後、編集ダイアログを更新して、その単位の値を入力し、oncomplete 属性を使用して表示できるようにします。ただし、編集ボタンをクリックしたときに管理されているメソッド setCurrent(unit) が呼び出されることはないようです。その後、ダイアログは空で表示されます。誰かが私が間違っていることを手伝ってくれますか? マネージドBeanコードも投稿しています。
@ManagedBean(name = "unitController")
@ViewScoped
public class UnitController implements Serializable {
private Unit current;
private List<Unit> unitsOfLoggedInUser;
@ManagedProperty(value="#{loginController.checkedUser}")
private Lecturer lecturer;
@EJB
private web.effectinet.ejb.UnitFacade ejbFacade;
@EJB
private web.effectinet.ejb.LecturerFacade lecturerFacade;
public UnitController() {
}
@PostConstruct
public void init(){
if (lecturer.getLecturerId() == null)
unitsOfLoggedInUser = null;
else
unitsOfLoggedInUser = (List<Unit>) lecturer.getUnitCollection();
}
public List<Unit> getUnitsOfLoggedInUser() {
return unitsOfLoggedInUser;
}
public void setCurrent(Unit current) {
this.current = current;
}
public Lecturer getLecturer() {
return lecturer;
}
public void setLecturer(Lecturer lecturer) {
this.lecturer = lecturer;
}