【问题标题】:Access JSP code inside c:if tags?访问 c:if 标记内的 JSP 代码?
【发布时间】:2015-09-05 15:11:28
【问题描述】:

我正在尝试根据您在另一个页面的下拉列表中选择的名称在表中显示数据库中的数据。但我不明白你如何比较标签内的jsp字符串? 我的下拉列表是从另一个 .jsp 页面上的数据库中填充的,称为“dropselect”。我知道您可以在 中获取名称,但在标签中无法访问?

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <link href="newcss.css" rel="stylesheet" type="text/css">
    <title>JSP Page</title>
</head>
<body>
    <table>
        <tr>
            <th>ID</th>
            <th>E-mail</th>
            <th>Full name</th>
            <th>SQL</th>
            <th>Collection</th>
            <th>Req</th> 
            <th>OS</th> 
            <th>Exam Project</th> 
            <th>Attendance</th>
            <th>Total</th> 
        </tr> 
        <c:forEach var="user" items="${listUsers.rows}">
            <%
                String selected = (String)request.getParameter("dropselect");
            %>
            <c:if test="${user.fullname eq selected}">      
                <tr>
                    <td id="id"><c:out value="${user.id}"/></td>
                    <td><c:out value="${user.email}"/></td>
                    <td><c:out value="${user.fullname}"/></td>
                    <td id="midt"><c:out value="${user.sp_sql}"/></td>
                    <td id="midt"><c:out value="${user.sp_coll}"/></td>
                    <td id="midt"><c:out value="${user.sp_req}"/></td>
                    <td id="midt"><c:out value="${user.sp_os}"/></td>
                    <td id="midt"><c:out value="${user.sp_examp}"/></td>
                    <td id="midt"><c:out value="${user.sp_att}"/></td>
                    <td id="midt"><c:out value="${user.total}"/></td>
                </tr>
            </c:if>

        </c:forEach>
  %>
    </table>

    <form method="post" action="index.jsp">
        <input type="submit" value="Tilbage">
    </form>

</body>

【问题讨论】:

  • 你得到了什么异常,你能提供一个stackTrace吗?
  • 没有异常。代码有效,但表永远不会从数据库中填写,因为在 中选择的内容是空的,它永远不会在表中显示任何内容。我只想要标签内的变量字符串。如果我写 它会起作用,但它只会始终显示相同的名称。我希望能够从下拉列表中选择一个名称,然后按一个按钮将我带到一个新页面。从那里我想用与该名称关联的数据库中的数据填写一个表。
  • 把这段代码放在你的表之前 确保该值不为空。从逻辑上讲,该行应该超出您的 foreach 循环。

标签: html sql jsp tags compare


【解决方案1】:

如果你的参数dropselect不为null,你可以试试这段代码

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <link href="newcss.css" rel="stylesheet" type="text/css">
  <title>JSP Page</title>
</head>
<body>
<table>
  <tr>
    <th>ID</th>
    <th>E-mail</th>
    <th>Full name</th>
    <th>SQL</th>
    <th>Collection</th>
    <th>Req</th>
    <th>OS</th>
    <th>Exam Project</th>
    <th>Attendance</th>
    <th>Total</th>
  </tr>
  <c:forEach var="user" items="${listUsers.rows}">
    <c:if test="${user.fullname eq param.dropselect}">
      <tr>
        <td id="id"><c:out value="${user.id}"/></td>
        <td><c:out value="${user.email}"/></td>
        <td><c:out value="${user.fullname}"/></td>
        <td id="midt"><c:out value="${user.sp_sql}"/></td>
        <td id="midt"><c:out value="${user.sp_coll}"/></td>
        <td id="midt"><c:out value="${user.sp_req}"/></td>
        <td id="midt"><c:out value="${user.sp_os}"/></td>
        <td id="midt"><c:out value="${user.sp_examp}"/></td>
        <td id="midt"><c:out value="${user.sp_att}"/></td>
        <td id="midt"><c:out value="${user.total}"/></td>
      </tr>
    </c:if>

  </c:forEach>
</table>

<form method="post" action="index.jsp">
  <input type="submit" value="Tilbage">
</form>

</body> 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多