【问题标题】:How to show all rows from database to jsp page using struts 2?如何使用struts 2显示从数据库到jsp页面的所有行?
【发布时间】:2013-09-27 19:53:46
【问题描述】:

我是 Struts2 和 Hibernate 的新手。 I want to create a drop-down list like the following [ using hibernate and struts] which pops up a menu dynamically and when an id will be selected, it shows all the information of that 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 ...
}

现在,我将 action 定义到 struts.xml 文件中,如下所示:

// Struts.xml
<action name="idSelection" class="..." method="findId">
    <result> studentpage.jsp </result>
</action>

那么,现在我该如何实现studentpage.jsp。请你告诉我必要的代码或参考来做到这一点

谢谢。

【问题讨论】:

    标签: java hibernate jsp struts2


    【解决方案1】:

    如果你的列表是这样的:List&lt;Student&gt; 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&lt;List&lt;String&gt;&gt;,你可以这样做:

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

    【讨论】:

    • 我是初学者。你能在这里发布一个完整的例子吗?!
    【解决方案2】:

    不是 Struts2 的工作方式。

    当您调用一个方法时,该方法必须只返回一个字符串结果。该字符串结果映射到您的 struts.xml 以返回特定结果(在您的情况下为 JSP)。

    要从 JSP 访问 Action 数据,您需要访问要读取的字段的 Getter。 任何 IDE 都可以为您编写 Getter 和 Setter。如果您使用的是 Eclipse,ALTSHIFTS 然后 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>
    

    注意&lt;result&gt;等于&lt;result name="success"&gt;(称为智能默认),当不指定method时,会执行execute()方法。

    然后在 JSP 中,迭代结果并一次打印每个 Student 对象:

    <s:iterator value="students">
        <s:hidden name="id" />
        <s:textfield name="name" />
        <s:property value="age" />
    </s:iterator>
    

    【讨论】:

    • 感谢您的指导。但我想通过以下方式创建输出:theproblemdomains789.blogspot.com/2013/09/… [对不起,我无法上传图片,因为我目前的声誉低于 10] 当有人点击 1 时,它将显示该 ID 的结果。并以这种方式。
    • 我在您链接的网站中什么也看不到 :|顺便说一句,你应该坚持我写的,除了 JSP 部分:那是视图,它是实现应该不同的唯一地方。我的就是一个例子,自己画个JSP就行了。
    • 实际上,在那个链接中......我试图表示选择学生 ID 的最终输出。选择该 ID 后,它将生成该学生的所有信息
    • 您链接的图片不存在了。您的链接中没有任何内容。 Press CTRL+F5 then look at the image.
    • 顺便说一句,尝试自己实现它,因为即使您发布图像,也没有人会为您完成整个工作。开始正确设置 Struts 并通过我的回答中描述的 Action 将数据从数据库获取到 JSP。只有这样,您才应该开始对其进行建模。 P.S:如果有帮助不要忘记接受答案
    猜你喜欢
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2011-03-04
    相关资源
    最近更新 更多