【问题标题】:Seam unexpected createInstance call接缝意外的 createInstance 调用
【发布时间】:2013-02-22 16:25:28
【问题描述】:

我有一个 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());
...
}

【问题讨论】:

    标签: jsf jsf-2 primefaces seam seam2


    【解决方案1】:

    如果在 page.xml 中使用 &lt;action /&gt; 标记调用 public void wire(),请确保将其 on-postback 属性设置为 false,否则将在任何回发时再次调用它,包括表单提交,执行fillMemberLog()的前两行并清除实例中的值。

    【讨论】:

      猜你喜欢
      • 2012-04-12
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多