根据p:inputText字段插入primefaces dataTable行

时间:2013-06-21 16:38:50

标签: jsf primefaces datatable javabeans

我想了解如何实施这个案例。 (使用jsf 2.0和primefaces 3.5)

  • 大约有10个primefaces inputTexts
  • 有一个primefaces dataTable
  • 让一个名为Contact的实体拥有10个属性,如(名称,描述等)

  • 输入inputTexts并单击按钮后,如何在dataTable中添加行的最佳方法。 ? (我无法在数据库中保留数据。只在dataTable新行中添加已键入的新数据)

感谢,

2 个答案:

答案 0 :(得分:2)

所以这就是你要做的事情(10次)以获得你的结果:

从指定你想要的任何实体bean开始,我们将在这里保持通用,以使这对许多好的灵魂有用:

package pack;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class Entity {

    private String entityProperty ;

    public String getEntityProperty() {
        return entityProperty;
    }

    public void setEntityProperty(String entityProperty) {
        this.entityProperty = entityProperty;
    }


    public Entity(String e) {
        this.entityProperty = e ;
    }
}

然后你必须在bean中使用这个Entity(我称之为Bean)。我们这样做是为了填充dataTable我们将迭代以创建其行的列表。这是豆子:

    package pack ;

import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

@ManagedBean
@RequestScoped
public class Bean {
    private String property ;
    private ArrayList<Entity> list ;

    public ArrayList<Entity> getList() {
        return list;
    }

    public void setList(ArrayList<Entity> list) {
        this.list = list;
    }

    public String getProperty() {
        return property;
    }

    public void setProperty(String property) {
        this.property = property;
    }

    public Bean() {
        list = new ArrayList<Entity>();
    }

    public void showInDataTable(){
        list.add(new Entity(property));
    }

}

最后,我们来到演示文稿页面,primefaces site之旅通常会让您了解使用内容以及如何使用:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">
    <h:head>
        <title>StackOverflow</title>
    </h:head>
    <h:body>
        <h:form>
            <p:inputText value="#{bean.property}" />
            <p:commandButton value="show in dataTable" action="#{bean.showInDataTable}" update="dataTable"/>
            <p:dataTable id="dataTable" value="#{bean.list}" var="o">
                <p:column>
                    <h:outputText value="#{o.entityProperty}" /> 
                </p:column>
            </p:dataTable>
        </h:form>
    </h:body>
</html>

所以你根据自己的需要调整它,一旦你确定你的Entity等价物必须处理哪些属性(也就是说,在你的情况下,为bean和实体提供了9个属性),它应该很好地流动调整后的构造函数。)

祝你好运。

答案 1 :(得分:0)

尝试以下

  • 联系类的列表作为表值。
  • 在commandButton的 actionListener 方法中,创建 new Contact class 并使用相应的inputText 设置其属性。
  • 将新创建的对象追加到列表
  • 在commandButton中:进程 inputTexts,更新数据表

将中间结果存储到数据库

中不需要