2014-11-25 5 views
0

안녕하세요 동적 양식을 만드는 복합 구성 요소를 만들었습니다. 빈을 지원하는 구성 요소에 3 개의 인수를 전달합니다. 그 중 2 개는 사물입니다.JSF 컴포지트 구성 요소 인수 업데이트

<p:outputPanel id="dynaForm" >    
<p:outputPanel rendered="#{formTest.dynamicForm!=null}" > 
    Form in parent: #{formTest.dynamicForm.id}<br/> 

    <cc:dynamicFormComponent 
     formObject="#{formTest.form}" 
     formDataObject="#{formTest.recordObject}" 
     mode="1" 
    /> 

</p:outputPanel>   
</p:outputPanel> 

정적으로 사용하는 경우 그것은 잘 작동하지만 동적 dynaForm 패널을 selectOneMenu를 사용하여 atribute formObject을 변경하고 업데이트하려고 할 때, 처음으로이 양식을 작성하지만 난 형태 변경하려고하면 속성이, 업데이트하지 않습니다 첫 번째 선택을 기억합니다. 이것은 문자열을 사용하여 객체가 정상적으로 변경되는 경우 객체 속성에서만 발생합니다. 패널 및 복합 구성 요소에서 양식의 ID를 출력하고 복합 구성 요소가 업데이트 된 값을 인식하지 못하는 것 같습니다. 그것은 stateHelper 문제, 내가 사용하여 백업 빈의 초기화 구성 요소에 이러한 특성을 저장했다

<cc:interface componentType="dynamicFormComponentGenerator" > 
</cc:interface> 
<cc:implementation> 
    Form in component: #{cc.attrs.formObject.id} 
<cc:implementation> 

답변

0

:

getStateHelper().put("formObject", formObject); 
getStateHelper().put("formDataObject", formDataObject); 

그것을 방지 밝혀 여기

는 구성 요소 코드의 기본이다 상태 도우미에서 모든 속성을 지우거나 다시 설정하기 전에는 업데이트가 변경되지 않습니다.

getStateHelper().remove("formObject"); 
getStateHelper().remove("formDataObject");