下面是我的应用程序当前的工作方式。
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>