2014-11-25 1 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> 

Это хорошо работает, когда используется статически, но когда я пытаюсь динамически изменять atribute formObject с помощью selectOneMenu и обновить dynaForm панель, первый раз она строит форму, но когда я пытаюсь изменить формировать атрибут не обновляется, его помнит первый выбор. Это происходит только с атрибутами объекта, если я использую строку, она меняется нормально. Я выводю идентификатор формы на панели и в составном компоненте, и кажется, что составной компонент не хочет воспринимать обновленное значение.

Вот основа коды компоненты:

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

ответ

0

Это был stateHelper проблемы, я сохранил эти атрибуты на компоненте инициализации, в качестве бэк-боб с помощью:

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

оказывается, что предотвращает их от изменения до обновления, пока вы не очистите все атрибуты от помощника состояния, прежде чем пытаться их снова установить.

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

 Смежные вопросы

  • Нет связанных вопросов^_^