Struts2 在struts 2中获取所选项目文本

Struts2 在struts 2中获取所选项目文本,struts2,Struts2,我有一个ui标签选择 <s:select list="studentList" name="selectedstudent" listKey="studentID" listValue="studentName" headerKey="0" headerValue="--All Student--" theme="simple"></s:select> 在java代码中,我选择了student returns,比如说4,如何在java中获取学生的姓名。

我有一个ui标签选择

<s:select list="studentList" name="selectedstudent" listKey="studentID"
    listValue="studentName" headerKey="0" 
    headerValue="--All Student--" theme="simple"></s:select>

在java代码中,我选择了student returns,比如说4,如何在java中获取学生的姓名。

您可以在selectedstudent中通过id获取姓名。为此,若您的操作中并没有学生列表,那个么应该从数据库中加载他们。否则,如果为对象提供getter,则按id搜索学生对象将返回名称。请记住,您已经将listValue指定为studentName。该值应取自学生,因此列表也应为列表

如果您的学生列表正在会话中,您可以检索学生姓名,如下所示。您的代码可能不同:

List<Student> studentList = (List<Student>)ActionContext.getContext().getSession().get("studentList");
//You should ovveride equals(and hashCode) to point the Student equality to studentID
//You should also check if studentList.indexOf(selectedstudent) != -1
Student student = studentList.get(studentList.indexOf(selectedstudent));
String studentName = student.getStudentName();
业务层

Student.java模型

public class Student {
   //Getter and Setter Method.
    private String id;
    private String name;
    public Student(String id, String name) {
        this.id = id;
        this.name = name;
    }
}
struts.xml

  <action name="list_action" class="controller.ListAction">
        <result name="success">struts_select.jsp</result>
  </action>
包装控制器

ListAction.java

   private List<Student> student_list = new ArrayList<Student>();//Getter and Setter
   @Override
   public String execute() throws Exception {
      //do your stuff
      //list collect from database.
      student_list=(List<Student>) criteria.list();
    }
struts_select.jsp

    <s:select label="Student List" 
              listKey="id"  //use your Student.java member variable of id signature
              listValue="name"  //use your Student.java member variable of name signature
      headerKey="0" headerValue="Select student Name"
      list="s" 
      name="student_info" />

那么,您只需要名称还是id和名称?两者都需要,目前为止,我只能通过从db、session、anywhere重新加载idRepopulate studentList来获取它,然后在所选索引处获取对象。您不能使用一些js或解析字符串同时提交w/o。提交id并在类中从某处获取名称。@AleksandrM然后在js中选择更改时,我将文本设置为隐藏字段,并在java中获取该字段值