ダイアログを開いていくつかの値を設定/変更しようとしているxhtmlページがあります。ページは通常、MemberInformationServiceによってサポートされています。このページのpage.xmlでは、wire関数を呼び出して、MemberLogHomeのインスタンスにいくつかの値を設定します。すべてが完璧になります。commandButtonを押してダイアログを開くと、MemberLogHomeのインスタンスが正しく設定されていることがわかります(ダイアログで設定した値を確認できます)が、同時に、予期しないcreateInstance呼び出しがあり、後でsetInstanceが続行されます。 MemberLogHomeのインスタンス値をnullにします。このため、ダイアログを送信するとエラーが発生します。予期しない呼び出しを行うものが見つかりませんでした。また、この呼び出しは、ダイアログを開くたびに実行されます。Seam2.3とprimefaces3.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());
...
}