如何以编程方式获取jsf或PrimeFaces数据表的所有行

时间:2012-02-14 10:33:41

标签: jsf primefaces uicomponents

我正在使用数据表,每行都有一个selectonemenu作为列。

我的页面上有一个按钮。单击它时,我想检查数据表的每一行,找到selectone菜单的选定项目,并根据所选值创建一些数据库内容。

如果没有使用编程方式或我的代码的任何解决方案,是否有更简单的方法?

这是我的代码:

这里我只是试图找到一个输出文本,但它没有用。

private DataTable myTable//primefaces datatable;



for ( UIComponent row : myTable.getChildren()) {
            HtmlOutputText  a=  (HtmlOutputText) row.findComponent("bname");

            System.out.println("click"+a.getValue());       

        }

2 个答案:

答案 0 :(得分:0)

只需将选择的选定值绑定到地图上。

<p:dataTable .... rowIndexVar="index">
   ... somwhere in column
   <p:selectOneMenu value="#{backingBean.values[index]}" >
       ... 

答案 1 :(得分:0)

将datatable的value属性绑定到POJO列表。表列对应于POJO成员。

public class MyPOJO{
public String column1;
public String column2;
public String column3;
public String column4;
    //setters and getters here ....
}

@ManagedBean(name="beanDetails")
@ViewScoped
public class MyBean {
public List<MyPOJO> list_POJO;
private HashMap<String,String> fieldValues;
    //setters and getters here ....
}

<p:dataTable id="myTable" value="#{beanDetails.list_POJO}" var="dataItem"> 
<p:column>
    <f:facet name="header">
       <h:outputLabel value="Column 1" />
    </f:facet>

   <p:cellEditor>
        <f:facet name="output">
            <h:outputLabel value="#{dataItem.column1}" />
        </f:facet>

        <f:facet name="input">
              <p:selectOneMenu id="relevance" value="#{dataItem.column1}">
                     <f:selectItems value="#{beanDetails.fieldValues}"/>
              </p:selectOneMenu>
        </f:facet>
   </p:cellEditor>
</p:column>
   .... 
   ....
</p:dataTable>  

<p:commandButton value="Submit" actionListener="#{beanDetails.submitDetails}"/>

在submitDetails中,您可以使用list_POJO遍历数据表记录。