如何在 struts2 迭代器中提供超链接

How can I give a hyperlink in a struts2 iterator

我正在使用 struts 2 iteratorJSP 上打印 ArrayList(学生的详细信息)字符串。由于 ArrayList 中的详细信息数量更多,我想保留一个指向其中一个字段的超链接,这样每当用户单击任何学生的姓名时,该学生的其他详细信息就会出现。就像那个点击调用一个动作,我可以从那里去一个 Dao 来获取那个学生的其他细节。

我的问题是如何在迭代器中保留指向元素的超链接,甚至如何将名称传递给操作??谁能帮我解决这个问题?

    <table class="display" border="1">
<tr>
    <th>Username</th>
    <th>Role</th>
    <th>Name</th>
    <th>Surname</th>
    <th>Contact number</th>
    <th>Email</th>
</tr>
<s:iterator value="list">
    <tr>
        <td><s:property value="userName"/></td>
        <td><s:property value="role"/></td>
        <td><s:property value="name"/></td>
        <td><s:property value="initial"/></td>
        <td><s:property value="contact"/></td>
        <td><s:property value="email"/></td>
    </tr>
</s:iterator> 

假设这会打印 __aadya__, __rolenum__, __name__, __surname__, __contact__, __email__。当最终用户点击用户名时,他应该能够获得 aadya 的其他详细信息。

您可以在 several ways 中完成此操作。

  1. 急切加载详细信息,并呈现隐藏它们的页面

    如果您的 table 是分页的(它应该),例如每页显示 10 或 50 行,您可以评估是否需要调用一个操作,或者是否可以/方便加载所有学生及其详细信息,将它们隐藏在页面中。此时,单击用户名将触发一个简单的 javascript 来显示/隐藏页面中已有的该学生的详细信息。

  2. 用表格加载详细信息post

    用指向加载学生详细信息的操作的表单包围每个用户名,并包含一个带有 id 的隐藏参数,或将其放在查询字符串中。

  3. 通过 AJAX 调用加载详细信息

    将 Javascript 事件附加到元素(锚点、div、td 本身等...),执行对加载操作的 AJAX 调用学生的详细信息,解析响应(可以是 JSON,或 JSP 片段,或流...)以将其放入页面(通过手动创建 HTML 元素,或者将响应按原样注入目标 div)。 SO 上有几个示例,例如 this and 。请记住不要对 AJAX 使用 struts2-dojo 标签,因为它们在很久以前就被弃用了……使用原始 jQuery (在这种情况下更好),或 Struts2-jQuery-plugin(一样好).

解决方案 1 非常快,我想这就是您所需要的。解决方案 3 也很好,因为像解决方案 2(旧方法)一样,为了获得单个数据对象而重新post 整个页面是一种耻辱。