org.apache.jasper.JasperException:处理JSP页面/editinfo.jsp时发生异常

新手上路,请多包涵

我有这个 jsp 代码,我试图在我的网页上为用户编辑信息。我是 jsp 编程的新手,我遇到了错误。这是我的代码:

 <%@page import="DatabaseTransactions.UserPhotosDataContext"%>
<%@page import="java.sql.ResultSet"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%
            if (session.getAttribute("id") == null) {
                response.sendRedirect(request.getContextPath() + "/sign-in.jsp");
            }

            int userId = Integer.parseInt(session.getAttribute("id").toString());
            ResultSet userInfo = UserPhotosDataContext.getUserProfileInfo(userId);
%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Edit Information</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">

        <!-- Bootstrap -->
        <link href="css/bootstrap.min.css" rel="stylesheet" media="screen">
        <link href="styles.css" rel="stylesheet">
    </head>

    <body class="bodybg">
        <jsp:include page="/navigation.jsp"/>
        <% userInfo.next();%>

        <div class="boxouter" style="margin-top:50px;">
            <h3 class="muted">Edit Information</h3>
            <!--- more code here---->

                <br><br>
                <form id="update-form" method="" action="">
                    <table style="margin:auto">
                        <tr>
                            <!--username-->
                            <td>
                                <label>Username <span id="uname-error" class="form-error"></span></label>
                                <input type="text" title="Use at least 6 characters"
                                       name="username" id="uname"
                                       value="<%=userInfo.getString("username")%>"
                                       placeholder="Username" disabled="true">
                            </td>

                            <!--email-->
                            <td>
                                <label>Email <span id="email-error" class="form-error"></span></label>
                                <input type="text"
                                       name="email" id="email"
                                       value="<%=userInfo.getString("email")%>"
                                       placeholder="Email" disabled="true">
                            </td>
                        </tr>

                        <!--- more code here---->

                    </table>

                    <center/>
                    <button class="btn btn-info" onclick="enablefields();" id="enablebtn" style="visibility:visible">Edit Information</button>

                    <a id="savelink" href="#" style="color:white;">
                        <button class="btn btn-info" id="savebtn" type="submit" style="visibility:hidden">Save</button>
                    </a>

                    <a href="#" style="color:white">
                        <button class="btn btn-info" id="deactivatebtn" style="visibility:visible">Deactivate Account</button>
                    </a>
                </form>
            </div>
        </div>

        <br><br>

        <!--- more code here---->

    <script type="text/javascript">
        function setValues() {
            if ("<%=userInfo.getString("gender")%>" == "Male")
            $('select option:contains("Male")').prop('selected',true);

            else if ("<%=userInfo.getString("gender")%>" == "Female")
            $('select option:contains("Female")').prop('selected',true);
        }

        window.onload = setValues;

    </script>

    <script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap-modal.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap-popover.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap-modalmanager.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/editinfo.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/holder.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/logout.js"></script>
    <script type="text/javascript" src="<%=request.getContextPath()%>/js/bootstrap-dropdown.js"></script>
</body>
</html>

当我运行它时,出现此错误:

org.apache.jasper.JasperException:在第 61 行处理 JSP 页面 /editinfo.jsp 时发生异常

第 61 行是:

value=“<%=userInfo.getString(“email”)%>”

我删除了这一行并且它工作得很好(但我需要它来获得价值)。当我保留第 61 行并尝试删除它时:

value=“<%=userInfo.getString(“用户名”)%>”

在我页面的第 52 行,它仍然不起作用。

我还将第 52 行替换为第 61 行并且它有效。

我也收到这些错误:

javax.servlet.ServletException:java.sql.SQLException:找不到列“电子邮件”。 java.sql.SQLException:找不到列“电子邮件”。

但我 100% 确定我的数据库有一个电子邮件列。此外,当我对数据库的其他列尝试此操作时,它会返回相同的错误。仅当它是“用户名”列时才有效。请帮我。我该如何解决?

原文由 achll 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 632
1 个回答

由于原始错误是 java.sql.SQLException 现在暂时忘记 JSP 错误。

UserPhotosDataContext.getUserProfileInfo(userId) 编写一些测试,以便您可以调试 ResultSet。

您确定 email 在表中 - 您确定它在 sql 查询中吗?

此外,检查您是否按照它们在 ResultSet 中出现的顺序从 ResultSet 中检索列。

例如,如果您的结果集是:

email, username, ...

然后尝试访问 email 在您已经访问 username --- 之后可能无法工作。

我说 MIGHT 因为这可能特定于您正在使用的任何数据库驱动程序 - 我在使用 Sybase 时遇到过这个问题。

原文由 user1373164 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题