0

我想建议如何实施这种情况。(使用 jsf 2.0 和 primefaces 3.5)

  • 有大约 10 个primefaces inputTexts
  • 有一个 primefaces 数据表
  • 有一个名为 Contact 的实体,具有 10 个属性,例如(名称、描述等...)

  • 输入 inputTexts 并单击按钮后,如何在 dataTable 中添加行的最佳方法。? (我不能在数据库上持久化数据。只在 dataTable 新行中添加键入的新数据)

谢谢,

4

2 回答 2

3

所以这是你要做的(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 ;
    }
}

然后,您必须Entity在 bean 中使用它(我称之为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 网站上的浏览通常会让您了解使用什么以及如何使用:

<?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 个属性以及这些属性的调整构造函数),它应该会很好地流动。

祝你好运。

于 2013-06-22T09:17:50.787 回答
0

尝试关注

  • 联系人类列表作为表值。
  • 在 commandButton 的actionListener方法中,创建新的 Contact 类并使用适当的 inputText设置它的属性。
  • 将新创建的对象附加到 List
  • 在 commandButton 中:处理inputTexts,更新Datatable

不需要将中间结果存储到数据库中

于 2013-06-21T20:33:08.590 回答