我是Struts2和Hibernate的新手。我想创建一个下拉列表,如下所示[使用hibernate和struts]动态弹出一个菜单,当选择一个id时,它会显示该id的所有信息:
我努力做到这一点。但失败了。任何人都可以帮助我:
我有一个像这样的'学生'表:
id name age
1...a.....20
2...b.....24
3...c.....22
使用Hibernate我创建模型和dao像... StudentModel和StudentDAO
在DAO中,我实现了一个返回id列表的方法:// StudentDAO.java
public List<String> findId(String id) {
.....
return ...
}
现在,我将动作定义为struts.xml文件,如下所示:
// Struts.xml
<action name="idSelection" class="..." method="findId">
<result> studentpage.jsp </result>
</action>
所以,现在我该如何实现studentpage.jsp。你能告诉我必要的代码或参考吗
谢谢。
答案 0 :(得分:0)
如果你的列表是这样的:List<Student>
studentList,而学生是
public class Student {
private Long id;
private String name;
private String age;
...
getter and setter...
}
request.setAttribute("studentList", studentList);
您可以实现studentpage.jsp:
<table>
<s:iterator value="#request.studentList" status="status">
<tr>
<td>
<s:property value="name">
</td>
<td>
<s:property value="age">
</td>
</tr>
</s:iterator>
</table>
如果你像这样返回List:List<List<String>>
,你可以这样做:
<table>
<s:iterator value="#request.studentList" status="status" id="list">
<tr>
<td>
name:<s:property value="#list[#status.index][1]"/>
</td>
<td>
age:<s:property value="#list[#status.index][2]"/>
</td>
</tr>
</s:iterator>
</table>
答案 1 :(得分:0)
Struts2的工作方式不。
调用方法时,该方法必须仅返回String结果。 String结果映射到struts.xml中以返回特定结果(在您的情况下是JSP)。
要从JSP访问Action数据,您需要访问要读取的字段的Getters。 任何IDE都可以为你编写Getters和Setters。如果您正在使用Eclipse, ALT SHIFT S 然后 R 肯定会有所帮助。
此外,与OOP(面向对象编程)建议一样,您应该使用对象来传输/传输数据,使用findStudents()
(而不是findIds()
之类的方法,然后为每个对象调用id
)。
假设一个像这样的学生对象
public class Student {
private Long id;
private String name;
private Integer age;
/* GETTERS (or ACCESSORS) */
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
/* SETTERS (or MUTATORS) */
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
在你的Action中,你应该使用getter / setter来声明它们的私有列表,并在名为的方法中对其进行评估:
private List<Student> students;
public List<Student> getStudents(){
return students;
}
public void setStudents(List<Students> students){
this.students = students;
}
public String findStudents(){
students = getMyServiceDaoOrSomething().findAllStudents();
return "success";
}
使用类似
的配置<action name="students" class="..." method="findStudents">
<result>studentpage.jsp</result>
</action>
请注意,<result>
等于<result name="success">
(称为智能默认值),如果未指定method
,则会执行execute()
方法。
然后在JSP中,迭代结果并立即打印每个Student
对象:
<s:iterator value="students">
<s:hidden name="id" />
<s:textfield name="name" />
<s:property value="age" />
</s:iterator>