使用Java EE Bean保存表单数据列表并在JSF XHTML DataTable中打印数据



下面是我的应用程序当前的工作方式。

1。用户填写一个"Voter Registration" XHTML表单。

2。当用户单击submit时,通过使用SessionScoped CDI Java-EE文件保存值。

下面是该文件的内容:

import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class VoterBean implements Serializable{
    private String firstName;
    private String lastName;
    private String address;
 private String city;
 private String state;
 private String zip;
    private String phone;
    private String affil;
    public VoterBean(){
    }
    public String getFirstName(){
        return firstName;
    }
    public String getLastName(){
        return lastName;
    }
    public String getAddress(){
        return address;
    }
 public String getCity(){
        return city;
    }
 public String getState(){
        return state;
    }
 public String getZip(){
        return zip;
    }

    public String getPhone(){
        return phone;
    }
    public String getAffil(){
        return affil;
    }
    public void setFirstName(String firstName){
        this.firstName = firstName;
    }
    public void setLastName(String lastName){
        this.lastName = lastName;
    }
    public void setAddress(String address){
        this.address = address;
    }

  public void setCity(String city){
        this.city = city;
    }
  public void setState(String state){
        this.state = state;
    }
  public void setZip(String zip){
        this.zip = zip;
    }   
    public void setPhone(String phone){
        this.phone = phone;
    }
    public void setAffil(String affil){
        this.affil = affil;
    }

}

3。用户将得到他/她填写的值的摘要。询问用户当前值是否正确。如果用户单击"No",则用户将被带回到注册表单,以便能够更改他/她的值。

现在的问题是当他们点击"是"。

我有两个问题:

问题# 1:

我想创建一个Bean文件,在用户单击"是"后,表单信息被保存为列表。因此,如果多个人完成了注册过程,那么应该有多个列表包含他们的信息。

我认为我应该获取当前存储在上面的Java-EE bean文件中的信息,并将其传输到另一个Java EE文件以创建列表。问题是我该如何列出所有这些信息并保存下来?

问题# 2

在用户单击"Yes"之后,他/她将被带到一个页面,该页面应该以JSF XHTML DataTable的形式显示所有信息。

从我读到的JSF文件中,在JSF XHTML中实例化一个Datable是这样的

<h:dataTable value="#{order.orderList}" var="o"
styleClass="order-table"
headerClass="order-table-header"
rowClasses="order-table-odd-row,order-table-even-row">
</h:dataTable>

假设我有一个名为"Order"的Java-EE文件和一个名为"orderList"的列表变量,这个数据表将获得该列表变量中的值,并在单独的行中打印每个不同的列表?

我建议使用另一种方法来存储每个人的注册信息,即通过一个称为Person.java的独立bean,该bean在您的托管bean中实例化。新bean将包含您放入托管bean中的注册信息。这样,您就不会使用列表,除非用于显示目的:

public class Person implements Serializable {
    private String firstName;
    private String lastName;
    private String address;
    private String city;
    private String state;
    private String zip;
    private String phone;
    private String affil;
    public Person(){ }
    // getters/setters
}
现在,一个托管bean就足够做所有的事情了,它最终看起来应该像这样:
import java.io.Serializable;
import javax.enterprise.context.SessionScoped;
import javax.inject.Named;
@Named
@SessionScoped
public class VoterBean implements Serializable{
     private Person person = new Person();
     private List<Person> personsList = new ArrayList<Person>();
     public VoterBean(){
     }
     public List<Person> getPersonsList() {
          return personsList;
     }
     public String saveRegistration(){
         personsList.add(person);
         return "registrationsList";  // navigation to the registration list page after each complete registration process (click save button)
     }
}

在显示页中,通过:

<h:dataTable value="#{voterBean.personsList}" var="p" ... >
    ...
</h:dataTable>

相关内容

  • 没有找到相关文章

最新更新