我有一个 xhtml 页面,我试图在其中打开一个对话框并设置/更改一些值。页面通常由 MemberInformationService 支持,在此页面的 page.xml 中,我调用了一个线函数来将一些值设置到 MemberLogHome 的实例中。一切都很完美。当我按下命令按钮打开对话框时,我可以看到 MemberLogHome 的实例设置正确,(我可以看到我在对话框上设置的值)但同时,有一个意外的 createInstance 调用,后来继续使用 setInstance使 MemberLogHome 的实例值为 null。因此,当我提交我的对话框时,我得到了错误。我找不到是什么导致了意外的来电。每当我打开对话框时,也会执行此调用。我正在使用 Seam 2.3 和 primefaces 3.5
课程很大,我只写我认为相关的部分
Xhtml 内部:
<p:menuitem value="#{messages.overallChange}"
onclick="dlg2.show()" />
<p:dialog header="#{messages.overallChange}" widgetVar="dlg2"
modal="true" resizable="true" appendToBody="true">
<h:form>
<p:panelGrid columns="1">
<s:decorate template="layout/edit.xhtml">
<ui:define name="label">#{messages.memberId}</ui:define>
<p:inputText
value="#{memberLogHome.instance.memberByNewMemberId.id}" />
</s:decorate>
....
<h:commandButton value="#{messages.submit}"
action="#{memberInformationService.saveOverallChange}"
oncomplete="dlg2.hide();" />
</h:form>
</p:dialog>
MemberInformationService 内部
@Name("memberInformationService")
@Scope(ScopeType.PAGE)
public class MemberInformationService {
@In(create = true)
MemberLogHome memberLogHome;
...
public void wire() {
...
fillMemberLog();
}
public void fillMemberLog(){
memberLogHome.clearInstance();
memberLogHome.setInstance(new MemberLog());
memberLogHome.getInstance().setBranchByNewBranchId(trustMemberHome.getInstance().getBranch());
...
}