0

我有下面的 html 和 java 代码来在 html 表中显示一行。

<table id="myTable" border="0" cellspacing="0" style="border-spacing:0; width:100%;border-collapse: collapse;">
            <%
                Object object = request.getAttribute("myContact");
                MyModel myModel = (MyModel)object;

                String mail = myModel.getmail()!=null ? myModel.getmail().toString().trim() : "";
                String title = myModel.gettitle()!=null ? myModel.gettitle().toString().trim() : "";
                String name = myModel.getname()!=null ? myModel.getname().toString().trim() : "";               
            %>

            <tr>
            <td class="table-border-bottom"><label for="name">Name:</label></td>
            <td class="table-border-bottom"><input id="name" type="text" value='<%=name%>' name="name" class="required" style="height: 17px;"/>
            </td>
            <td class="table-border-bottom"><label for="contactTitle">Title:</label></td>
            <td class="table-border-bottom"> <input id="title" type="text" value='<%=title%>' name="title" class="required" style="height: 17px;"/>

            </td>
            <td class="table-border-bottom"><label for="mail">Email:</label></td>
            <td class="table-border-bottom"><input id="mail" type="text" value='<%=mail%>' name="mail" class="required email" style="height: 17px; "/>

            </td>
            </tr>


            <tr align="center">
            <td valign="bottom" colspan="6" style="height: 45px; ">
            <input type="button" id="submit" name="submit" value="Save" style="width: 80px ; height:24px; text-align: center;border-radius: 10px 10px 10px 10px;"/> 
            <input type="button" id="revert" name="revert" value="Revert" style="width: 80px ; height:24px;text-align: center;border-radius: 10px 10px 10px 10px;"/></td>
            </tr>

      </table>   

我从数据库中获取一行并保持在请求范围内,然后我在 jsp 中访问相同的行并在上面的 html 表中显示。它运行良好,没有任何问题。现在的问题是我从数据库中获取行列表,然后我需要在 html 中显示为多行。此外,我必须为行的每个组件分配唯一的 id,并且 CSS 样式也需要如上所述应用。在这种情况下,我如何在循环中重复以上逻辑以正确显示具有 css 样式的行列表?

谢谢!

4

3 回答 3

1

如果您的MyModel班级有 bean 风格的吸气剂,例如:

public String getMail() {
   return this.mail;
}

您应该使用EL like${myContact.mail}来检索mail属性的值。

最好使用JSTL<c:out value="${myContact.mail}">标签来避免跨站脚本


如果您想显示 a List<MyModel>,请将其设置在 Servlet 的request范围内,该 Servlet 将请求转发到您的 JSP 。

request.setAttribute("myModelsList",myModelsListObject);

然后使用 JSTL 的<forEach>循环遍历每个元素List并显示它。

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
 ...
<table>
   <c:forEach items="${myModelsList}" var="myModel" varStatus="count">
    <tr id="${count.index}">
        <td>${myModel.mail}</td>
        <td>${myModel.title}</td>
        <td>${myModel.name}</td>
    </tr>
  </c:forEach>
</table>

另请阅读:

  1. 如何避免 JSP 文件中的 Java 代码?.
  2. 使用 JSTL forEach 循环的 varStatus 作为 ID
  3. 如何使用 JSP 交替 HTML 表格行颜色?
于 2013-07-29T14:37:43.963 回答
1

而不是从您的服务器代码发送一个对象,而是发送您希望显示为行列表的对象列表。

我没有测试过,请您处理空检查。

<table id="myTable" border="0" cellspacing="0" style="border-spacing:0; width:100%;border-collapse: collapse;">
            <%
                List<Object> object = (List<Object>)request.getAttribute("myContact");
        for(int i=0;i<object.size();i++){
                MyModel myModel = (MyModel)object.get(i);
                String mail = myModel.getmail()!=null ? myModel.getmail().toString().trim() : "";
                String title = myModel.gettitle()!=null ? myModel.gettitle().toString().trim() : "";
                String name = myModel.getname()!=null ? myModel.getname().toString().trim() : "";               
            %>


            <tr>
            <td class="table-border-bottom"><label for="name">Name:</label></td>
            <td class="table-border-bottom"><input id="name" type="text" value='<%=name%>' name="name" class="required" style="height: 17px;"/>
            </td>
            <td class="table-border-bottom"><label for="contactTitle">Title:</label></td>
            <td class="table-border-bottom"> <input id="title" type="text" value='<%=title%>' name="title" class="required" style="height: 17px;"/>

            </td>
            <td class="table-border-bottom"><label for="mail">Email:</label></td>
            <td class="table-border-bottom"><input id="mail" type="text" value='<%=mail%>' name="mail" class="required email" style="height: 17px; "/>

            </td>
            </tr>

    <% } %>

            <tr align="center">
            <td valign="bottom" colspan="6" style="height: 45px; ">
            <input type="button" id="submit" name="submit" value="Save" style="width: 80px ; height:24px; text-align: center;border-radius: 10px 10px 10px 10px;"/> 
            <input type="button" id="revert" name="revert" value="Revert" style="width: 80px ; height:24px;text-align: center;border-radius: 10px 10px 10px 10px;"/></td>
            </tr>

      </table>   

此外,使用 JSTL 而不是使用 scriptlet 会对您有所帮助。

对于行的样式,应用类如

CSS

.rowClass{
  /* APPLY STYLE TO ROWS */
}
于 2013-07-29T14:41:24.873 回答
0

相反,您现在可以将一个ContactList<Contact>对象设置为一个请求属性。

List<Contact> myContacts = (List<Contact>) request.getAttribute("myContacts");

然后只需使用Iterator一个while循环。

<table id="myTable" border="0" cellspacing="0" style="border-spacing:0; width:100%;border-collapse: collapse;">
<%
    List<Contact> myContacts = (List<Contact>) request.getAttribute("myContacts");

    Iterator<Contact> contacts = myContacts.iterator();
    while (contacts.hasNext()) {
      Contact myModel = contacts.next();

      String mail = myModel.getmail()!=null ? myModel.getmail().toString().trim() : "";
      String title = myModel.gettitle()!=null ? myModel.gettitle().toString().trim() : "";
      String name = myModel.getname()!=null ? myModel.getname().toString().trim() : "";               
%>

<tr>
<td class="table-border-bottom"><label for="name">Name:</label></td>
<td class="table-border-bottom"><input id="name" type="text" value='<%=name%>' name="name" class="required" style="height: 17px;"/>
</td>
<td class="table-border-bottom"><label for="contactTitle">Title:</label></td>
<td class="table-border-bottom"> <input id="title" type="text" value='<%=title%>' name="title" class="required" style="height: 17px;"/>

</td>
<td class="table-border-bottom"><label for="mail">Email:</label></td>
<td class="table-border-bottom"><input id="mail" type="text" value='<%=mail%>' name="mail" class="required email" style="height: 17px; "/>

</td>
</tr>

<% } // close loop
 %>

<tr align="center">
<td valign="bottom" colspan="6" style="height: 45px; ">
<input type="button" id="submit" name="submit" value="Save" style="width: 80px ; height:24px; text-align: center;border-radius: 10px 10px 10px 10px;"/> 
<input type="button" id="revert" name="revert" value="Revert" style="width: 80px ; height:24px;text-align: center;border-radius: 10px 10px 10px 10px;"/></td>
</tr>

</table>
于 2013-07-29T14:49:53.757 回答