Использование Java EE Bean для сохранения списка данных формы и распечатки данных в JSF XHTML DataTable

Вот как сейчас работает мое приложение.

1. Пользователь заполняет XHTML-форму «Регистрация избирателя».

2. Когда пользователь нажимает «Отправить», значения сохраняются с помощью файла 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. Пользователю предоставляется сводка значений, которые он/она заполнил. Пользователя спрашивают, соответствуют ли значения в настоящее время или нет. Если пользователь нажимает «Нет», он возвращается к форме регистрации, чтобы иметь возможность изменить свои значения.

Теперь проблема, когда они нажимают «Да».

У меня есть две проблемы:

Проблема №1:

Я хочу создать файл Bean, в котором после того, как пользователь нажмет «Да», информация о форме будет сохранена в виде списка. Поэтому, если несколько человек завершат процесс регистрации, должно быть несколько списков с их информацией.

Я думаю, что я бы взял информацию, хранящуюся в настоящее время в файле bean-компонента Java-EE выше, и перенес бы ее в другой файл Java EE для создания списков. Вопрос в том, как мне составить список всей этой информации и сохранить ее?

Выпуск №2

После того, как пользователь нажмет «Да», он будет перенаправлен на страницу, которая должна отображать всю информацию в таблице данных JSF XHTML.

Из того, что я читал о файлах JSF, чтобы создать Datable в JSF XHTML, это выглядит так:

<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>

Предполагая, что у меня есть файл Java-EE с именем «Заказ» и переменная списка с именем «orderList», эта таблица данных получит значения в этой переменной списка и распечатает каждый из разных списков в отдельных строках?

Любые советы будут очень полезны.


person Angelo Rivera    schedule 08.06.2014    source источник


Ответы (1)


Для этого я предлагаю использовать альтернативный способ хранения регистрационной информации каждого человека, через независимый компонент с именем Person.java, экземпляр которого вы создаете в своем управляемом компоненте. Новый 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>
person Omar    schedule 08.06.2014