【问题标题】:JSF adding object to arrayListJSF将对象添加到arrayList
【发布时间】:2016-09-26 19:42:06
【问题描述】:

我一直在尝试使用 Java Server Faces 将 Student 对象添加到 arrayList,但我可以弄清楚如何做到这一点,这是迄今为止我得到的帽子。我需要使用什么方法,我应该把它放在哪里?

索引

<h:body>
    <h:form >
        <h:panelGrid columns="2" >
            <h:outputText value="Name"/>
            <p:inputText value="#{student.name}" required="true">
            <h:outputText value="Age"/>
            <p:inputText value="#{student.age}" required="true">
                <p:commandButton value="Add" action="#{student.showGo()}"><!--go to another JSF page-->
                   <!-- ActionListener needed-->
                </p:commandButton>  
        </h:panelGrid>  
    </h:form>
</h:body>

学生豆

@Named(value = "student")
@RequestScoped
public class StudentBean {


private String name;
private int age;

public StudentBean(String name, int age) {
    this.name = name;
    this.age = age;
}


public StudentBean() {
}

public String showGo(){
    return "show";
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

}

列表 bean

@Named(value = "list")
@RequestScoped
public class List {

private ArrayList<StudentBean> studentList = new ArrayList<>();
public List() {
}

 public void addStudent()
{
    StudentBean student = new StudentBean();
    studentList.add(student);
}

【问题讨论】:

  • 您要解决的问题是什么?你能描述一下吗?
  • 用户输入姓名和年龄,我想将姓名和年龄存储在 StudentBean 类的对象中,这样我就可以将该对象添加到 ArrayList
  • #{student.showGo()} 应该引导你到哪里,或者show.xhtml 中应该显示什么?

标签: java jsf object arraylist


【解决方案1】:

我不确定我是否理解你。但是,如果您的意图只是将 nameage 保存在一个对象中并将其添加到列表中,则以下内容应该可以达到目的:

  1. SessionScope 中的托管 bean,以便您可以在下一页中访问它(`show.xhtml??):

    @Named(value = "student")
    @SessionScoped
    public class StudentBean {
    
     private ArrayList<Student> studentList = new ArrayList<>();
    
         private String name;
         private int age;
    
         public StudentBean(String name, int age) {
            this.name = name;
            this.age = age;
         }
    
    
          public StudentBean() {
          }
    
          public String showGo(){
             Stundent student = new Student(name, age);
             studentList.add(student);
    
             return "show";
         }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public List<Student> getStundentList() {
            return studentList;
        }
    }
    
  2. 将一个简单的Sundent 类定义为JavaBean:

    public class Stundent {
        private String name;
        private int age;
    
        public Stundent() { }
    
        public Stundent(String name, int age) {
             this.name = name;
             this.age = age;
        }
    
        // getters and setters
    }
    

    如果您还有问题,请给我留言。

【讨论】:

  • 谢谢,它有效!...最后一个问题:为什么需要学生班?
  • Student 类代表领域对象;。这就是你编写程序的原因。您可以在应用程序的不同层传递它。但是 StudentBean 是由运行时环境管理的;在这种情况下由 web 容器?您不能创建或销毁它:它的主要功能是控制 GUI 的逻辑:导航、事件处理、...
【解决方案2】:

你可以尝试做这样的事情:

<p:commandButton value="Add" action="#{list.addStudent()}"></p:commandButton>  

addStudent中:

public String addStudent()
{
    StudentBean student = new StudentBean();
    studentList.add(student);
    return "show";
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-12
    • 2011-12-24
    • 1970-01-01
    • 2016-08-10
    • 2021-05-26
    • 2019-02-18
    • 2014-01-19
    相关资源
    最近更新 更多