【问题标题】:primefaces3.0 datatable selection and value propertyprimefaces3.0 数据表选择和值属性
【发布时间】:2012-01-11 10:37:44
【问题描述】:

我已将我的项目从 Primefaces 2.2 升级到 3.0
我在数据表中遇到问题。我有一个数据表,我通过列表填充其值,并且选定的行保存在数组中

    <p:dataTable id="datavalues" value="#{bean.list}" 
                        var="o" paginator="true" rows="10" 
                        selection="#{bean.selected1}"           
                           rowKey="#{o.property1}"  > 

现在我希望在另一个数据表中使用选定的行,并且在该数据表上我将值用作“#{bean.selected1}”并将选择用作#{bean.selected2},因为我还需要从中选择的值表。

<p:dataTable id="table4" var="o" value="#{bean.selected1}"
                rows="10"           
                selection="#{bean.selected2}"           
                     rowKey="#{o.property2}"        
                > 

我得到的例外是:

[Lcom.packagedirectory.beans.beanHelper; cannot be cast to java.util.Collection

list、selected1、selected2都是beanHelper类的属性。 此代码在 2.2 上完美运行是否与该值也是一个数组和选择也是一个数组有关。

【问题讨论】:

    标签: jsf-2 primefaces


    【解决方案1】:

    在 Primefaces 2.2 中,选择会自动更新其 bean 值,但这可能不适用于每种情况,因此在 3.0 中他们更改了它,以便发生 ajax 回发,您需要放置一个 &lt;p:ajax&gt; 标记数据表中的 rowSelect 事件。

    <p:dataTable id="table1" ... >
      <p:ajax event="rowSelect" update="formid:table1 formid:table2" oncomplete="dlg.show()" />
      ...
    </p:dataTable>
    
    <p:dataTable id="table2" ... >
      ...
    </p:dataTable>
    

    第一个数据表的选择应该触发服务器回发和第二个数据表的部分页面更新。

    【讨论】:

    • 感谢您的回复。我的数据表位于不同的 .xhtml 页面中。如何更新不同页面的 id
    • 我没有看到有异常的编辑,所以这可能只是您的 beanHelper 类中的代码问题。没有看到你的代码,我无法告诉你。
    【解决方案2】:

    我认为您应该尝试在您的第一个 &lt;p:dataTable&gt; 和第二个 &lt;p:dataTable&gt; 中添加 selectionMode="multiple"selectionMode="single"

    【讨论】:

    • 我还必须从第二个数据表中选择多个项目。
    • @curious 那么selected1selected2 都必须是List
    猜你喜欢
    • 2012-05-01
    • 1970-01-01
    • 2014-08-02
    • 2020-10-28
    • 1970-01-01
    • 2018-11-22
    • 2020-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多