首页 > 解决方案 > 我正在尝试在 JSP 中将一个月添加到当前月份并在 html 教科书中显示结果

问题描述

这是我的输入框,应该显示一个月的日期。

      <div class="form-group">
      <label for="datum_uplate">Datum isteka:</label>
      <input type="date" class="form-control" id="datum_isteka" name="datum_isteka" >

这是我的 jsp 代码,出于安全原因,我不想使用 javascript。

    <%

      LocalDateTime.now().plusMonths(1);
      int months = int.Parse("datum_isteka".toString());
      LocalDateTime newDate = LocalDateTime.now().plusMonths(months);
    %>

当我启动我的 tomcat 时,会出现以下情况:

 Type Exception Report

 Message java.lang.ClassNotFoundException: org.apache.jsp.index_jsp

 Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: java.lang.ClassNotFoundException:     org.apache.jsp.index_jsp
    org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:176)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:380)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Root Cause

java.lang.ClassNotFoundException: org.apache.jsp.index_jsp
java.net.URLClassLoader.findClass(URLClassLoader.java:381)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:129)
org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:60)
org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:171)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:380)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Note The full stack trace of the root cause is available in the server logs.

标签: htmljspintellij-idea

解决方案


由于以下行,您会收到错误消息:

int months = int.Parse("datum_isteka".toString());

您使用的语法在Java.

如果我的想法是正确的,那么您正在尝试获取输入值并希望在 中进行评估jsp,这是不可能的,因为 jsp 代码将在您可以在浏览器中看到 html 内容之前执行。

如果您不想JavaScript在代码中使用,那么要获得textbox您需要提交页面的值,如下所示:

<!-- here I am using post method, coz I dont want users to see the content in the browser -->
<form method="post" action="index.jsp">

  <div class="form-group">
  <label for="datum_uplate">Datum isteka:</label>
  <input type="date" class="form-control" id="datum_isteka" name="datum_isteka" >        

  <input type="submit" value="Get Months">
</form>

 <%
  // to get the you use the java code
  if (request.getParameter("datum_isteka") != null ) {
     LocalDateTime.now().plusMonths(1);
     //int months = int.Parse("datum_isteka".toString());
     int months = Integer.parseInt(request.getParameter("datum_isteka")); // here you may need to handle empty string, `parseInt` method will throw error if the given value is empty, i.e; `datum_isteka` textbox value.
     LocalDateTime newDate = LocalDateTime.now().plusMonths(months);
  }
%>

现在newDate将具有所需的值。


推荐阅读