首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JSF组合组件参数更新

JSF组合组件参数更新
EN

Stack Overflow用户
提问于 2014-11-25 18:18:10
回答 1查看 194关注 0票数 0

嗨,我已经创建了一个复合组件,它构建了一个动态表单。我将3个参数传递给支持bean的组件。其中2个是对象。

代码语言:javascript
复制
<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> 

它在静态使用时效果很好,但当我尝试使用selectOneMenu和更新dynaForm面板动态更改属性formObject时,它第一次构建表单时,但当我尝试更改表单时,属性没有更新,它会记住第一个选择。这只发生在对象属性上,如果我使用字符串,它会正常改变。我在面板和复合组件中输出表单的id,复合组件似乎不想感知更新后的值。

以下是组件代码的基础:

代码语言:javascript
复制
<cc:interface componentType="dynamicFormComponentGenerator" >
</cc:interface>
<cc:implementation>
  Form in component: #{cc.attrs.formObject.id}
<cc:implementation>
EN

回答 1

Stack Overflow用户

发布于 2014-11-25 23:02:08

这是stateHelper的问题,我将这些属性存储在组件初始化中,在支持bean中使用:

代码语言:javascript
复制
getStateHelper().put("formObject", formObject);
getStateHelper().put("formDataObject", formDataObject);

事实证明,它会阻止它们在更新时更改,直到您在尝试再次设置它们之前清除状态辅助对象中的所有属性。

代码语言:javascript
复制
getStateHelper().remove("formObject");
getStateHelper().remove("formDataObject");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27123995

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档