【问题标题】:checkbox in datatble using primefaces5使用primefaces 5在数据表中的复选框
【发布时间】:2014-10-15 03:33:00
【问题描述】:

我的数据表有问题。

我尝试显示表格的选定行,但我不能,因为即使我检查了一行或多行,我的选择列表也是空的。似乎我的 selectedArticles 为空我不知道我的代码的哪一部分我应该改变吗?我请求你的帮助。 我的jsf页面:

<h:body>

     <h:form id="form">
<p:growl id="msgs" showDetail="true" />

<p:panel header="Order" style="margin-bottom:10px;">
    <h:panelGrid columns="2" cellpadding="5">
        <p:outputLabel for="category" value="Category: " />
        <p:selectOneMenu id="category" value="#{catBean.category}" var="line" style="width:150px">
          <p:ajax listener="#{catBean.onCategoryChange}" update="product" />
          <f:selectItem itemLabel="Select Category" itemValue="" noSelectionOption="true" />
            <f:selectItems value="#{catBean.myItems}"  />      
        </p:selectOneMenu>

        <p:outputLabel for="product" value="" />
        <p:dataTable id="product" var="line" value="#{catBean.myProducts}" selection="#{catBean.selectedItems}" style="margin-bottom:0" rowKey="#{line.cdProduct}">

         <p:column selectionMode="multiple" style="width:16px;text-align:center"/>
         <p:column headerText="Code">
        <h:outputText value="#{line.cdProduct}" />
        </p:column>
        <p:column headerText="title" >
        <h:outputText value="#{line.title}" />
        </p:column>

    <f:facet name="footer">
        <p:commandButton process="product" update=":form:multiProductDetail" icon="ui-icon-search" value="View" oncomplete="PF('multiProductDialog').show()" />
    </f:facet>
</p:dataTable>

<p:dialog header="Products" widgetVar="multiProductDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false" width="auto">
    <p:outputPanel id="multiProductDetail" style="text-align:center;">
        <ui:repeat value="#{catBean.selectedItems}" var="line">
            <h:outputText value="#{line.cdProduct} -- #{line.title}" style="display:block"/>
        </ui:repeat>
    </p:outputPanel>
  </p:dialog>

        </h:panelGrid>

     </p:panel>  
</h:form>    
</h:body>
</html>

我的 managedBean 包含这个属性

@ManagedBean(name="catBean")
@ViewScoped


public class catBean  implements Serializable {


private String cdCategory;
private String category;
private List<SelectItem> myItems;
private List<Product> selectedItems=new ArrayList<Article>();

{geters and setters...}

【问题讨论】:

    标签: jsf-2 checkbox primefaces datatable


    【解决方案1】:

    鉴于&lt;p:dataTable value&gt;&lt;p:selectOneMenu&gt;&lt;p:ajax listener&gt; 填充,因此&lt;p:dataTable value&gt; 的可用性取决于视图范围,您需要绝对确保该bean 也是视图范围。否则,&lt;p:dataTable value&gt; 在回发期间将默认为 null,并且没有任何内容可供选择。

    那些注释很好,

    @ManagedBean(name="catBean")
    @ViewScoped
    public class catBean  implements Serializable {
    

    但您需要确保从 javax.faces.bean 包中导入它们。如果您从javax.faces.view 导入@ViewScoped,那么bean 的行为将类似于@RequestScopedjavax.faces.view 仅当您使用@Named 而不是@ManagedBean 时。

    【讨论】:

    • 非常感谢@BalusC 这是我的问题的原因..真的你是最好的(y)
    猜你喜欢
    • 2015-05-22
    • 2012-08-16
    • 2013-05-01
    • 2017-10-02
    • 2012-08-30
    • 2014-12-16
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多