【问题标题】:JSF viewscope values not getting displayed in the view properlyJSF viewscope 值未正确显示在视图中
【发布时间】:2011-09-24 08:45:07
【问题描述】:

我在 ViewScope 下有一个托管 bean。它里面有一个实例变量。

MetaData 对象有一个 inputItem 对象 List。

@ManagedBean
@ViewScoped
public class ConBean implements Serializable {

     private MetaData metadata;

     @PostConstruct
     @SuppressWarnings("unchecked")
     public void init() throws IOException {
       this.metadata = new MetaData ();
     }

     public void proc(){
        List<InputItem> inputs= new ArrayList<InputItem>();
        inputs.add(***** code to populate the inputItem List);
        //after populating, inputs added to the metadata
        metadata.setInputs(inputs);

     }

//getters & setters
}

在我的 JSF 中,输入列表填充在 UI 重复中。

<div id="inputplaceholder">
<ui:repeat value="#{conBean.metaData.inputs}" var="content">

</ui:repeat>
</div>

div 输入占位符使用 Richfaces 投票定期更新。

<a4j:poll id="poll" interval="12000" action="#{conBean.proc}"
                                  execute="@form" render="inputplaceholder"/>

我遇到的问题是,即使 inputItems 在 proc() 方法中正确设置为 metaData 对象,当视图被渲染/部分更新时,它也不会在 UI 中突出显示。所以部分更新无效。我试着移动

this.metadata = new MetaData(); 在 proc 方法中,但没有运气。

我们非常感谢任何想法和帮助。

谢谢...

【问题讨论】:

    标签: jsf jsf-2 richfaces ajax4jsf


    【解决方案1】:

    部分渲染真的发生了吗?这是不可能的。即没有 ID 为 inputplaceholder 的 JSF 组件。您将其分配给纯 HTML &lt;div&gt; 元素。用一个完整的 JSF 组件替换它:

    <h:panelGroup layout="block" id="inputplaceholder">
    

    此外,由于您在 render 属性中使用了相对 ID,因此它只会扫描相同父命名容器组件中的组件。 &lt;ui:repeat&gt; 就是这样一个,但是具有所需 ID 的组件被放置在其外部。您想改用绝对 ID。假设它在具有固定 ID 的 &lt;h:form&gt; 内:

    <h:form id="myform">
        <h:panelGroup layout="block" id="inputplaceholder">
            ...
    

    那么您应该在render 属性中引用它,如下所示

    render=":myform:inputplaceholder"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多