Expecting "jsp:param" standard action with "name" and "value" attributes 錯誤

錯誤信息如下:

org.apache.jasper.JasperException: /admin/update_password_do.jsp(14,57) Expecting "jsp:param" standard action with "name" and "value" attributes
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:88)
    at org.apache.jasper.compiler.Parser.parseParam(Parser.java:802)
    at org.apache.jasper.compiler.Parser.parseBody(Parser.java:1645)
    at org.apache.jasper.compiler.Parser.parseOptionalBody(Parser.java:979)
    at org.apache.jasper.compiler.Parser.parseForward(Parser.java:843)
    at org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1095)
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1424)
    at org.apache.jasper.compiler.Parser.parse(Parser.java:130)
    at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
    at org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
    at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:185)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:354)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:334)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:321)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:612)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:503)
    at java.lang.Thread.run(Thread.java:745)

update_password_do.jsp文件如下:

<%@page contentType="text/html" pageEncoding="GBK"%>
<%@page import="org.mldn.yq.util.*,org.mldn.yq.vo.Admin,org.mldn.yq.factory.*"%>
<html>
<head><title>www.mldnjava.cn, JAVA高端培訓</title></head>
<% request.setCharacterEncoding("GBK"); %>
<body>
<%  String lto = "no";    // 表示登錄超時,即login timeout的縮寫
    try {  
        Admin admin = (Admin)session.getAttribute("admin");
        if (null == admin) {    // 判斷瀏覽器中保存的session對象是否超時
            lto = "yes";
%>
            <jsp:forward page="../error_page.jsp">
              <jsp:param name="lto" value="<%=lto%>"/>        <%-- 參數值爲"yes"表示登錄超時 --%>
            </jsp:forward>
<%
        }
        String oldPW = request.getParameter("oldPW");
        if (null == oldPW) {
            oldPW = "";
        }
        oldPW = new MD5Code().getMD5ofStr(oldPW);  // 使用MD5Code對象加密
        if (!admin.getPassword().equals(oldPW)) {     // 判斷輸入的原密碼是否正確
%>
            <jsp:forward page="update_password.jsp">
              <jsp:param name="info" value="原密碼輸入錯誤!"/>
            </jsp:forward>
<% 
        }
        String newPW = request.getParameter("newPW");
        if (null == newPW) {
            newPW = "";
        }
        newPW = new MD5Code().getMD5ofStr(newPW);
        admin.setPassword(newPW);
        if (DAOFactory.getIAdminDAOInstance().updateById(admin.getAdminid(), admin)) {
            request.setAttribute("head", "密碼修改成功!");    
        } else {
            request.setAttribute("head", "密碼修改失敗!");
        }
        request.setAttribute("str", "秒後自動跳轉...");
        request.setAttribute("url", "admin_privilege.jsp");
%>
        <jsp:forward page="../countdown_jump_page.jsp"/>
<%
    } catch(Exception e) {
        e.printStackTrace();
    }
%>   
</body>
</html>

錯誤原因在於:<jsp:forward>標籤的開始與結束之間不能有註釋<%-- --%>!

<jsp:forward page="../error_page.jsp">
              <jsp:param name="lto" value="<%=lto%>"/>        <%-- 參數值爲"yes"表示登錄超時 --%>
            </jsp:forward>

去掉註釋就不再報錯了。

總結該錯誤可能出現的原因:

1.標籤的開始和結束不一致:比如我犯的這個錯

2.沒有結束標籤:<jsp:forward page="../error_page.jsp">,應該是<jsp:forward page="../error_page.jsp"/>

3.沒有參數的標籤,結束時不能換行:

   <jsp:forward page="testTag.jsp">

   </jsp:forward>

  應該是<jsp:forward page="testTag.jsp"></jsp:forward>

4、標籤的開始與結束之間不能有註釋,如上所示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章