2013-03-07 7 views
0

대화 상자를 열고 설정/변경하려고하는 xhtml 페이지가 있습니다. 페이지는 일반적으로 MemberInformationService에 의해 뒷받침됩니다.이 페이지의 page.xml에서 저는 MemberLogHome의 인스턴스에 일부 값을 설정하는 와이어 함수를 호출합니다. 모든 것이 완벽 해집니다. commandButton을 눌러 대화 상자를 열면 MemberLogHome의 인스턴스가 올바르게 설정되어있는 것을 볼 수 있지만 (대화 상자에 설정된 값을 볼 수 있음) 동시에 나중에 createInstance를 호출하는 예기치 않은 createInstance 호출이 있습니다. MemberLogHome의 인스턴스 값을 null로 만듭니다. 이 때문에 내 대화 상자를 제출할 때 오류가 발생합니다. 나는 예기치 않은 전화를하는 것을 발견 할 수 없었다. 또한이 호출은 대화 상자를 열 때마다 실행됩니다. 나는 심 2.3을 사용하여 3.5예기치 않은 createInstance 호출이 발생했습니다.

클래스 내가 XHTML의 내부 관련

생각 난 그냥 부품을 쓰고있어 꽤 큰 있습니다 primefaces 해요 :

<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> 

@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()); 
... 
} 
MemberInformationService

의 내부

답변

0

public void wire()이 page.xml에 <action /> 태그와 함께 호출 된 경우 해당 on-postback 속성이로 설정되어 있는지 확인하십시오.이면 양식 제출을 포함하여 모든 다시 게시에서 다시 호출되며 fillMemberLog()의 처음 두 행을 실행하고 인스턴스의 값을 지 웁니다.