Я пытаюсь сделать функцию добавить один месяц к текущему месяцу в JSP и показать результат в учебнике в HTML - PullRequest
0 голосов
/ 02 мая 2018

Это мое поле ввода, которое должно показывать дату через один месяц.

      <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);
    %>

И когда я запускаю свой кот, вот что появляется:

 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.

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Вы получаете ошибку из-за строки ниже:

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 будет иметь необходимое значение.

0 голосов
/ 02 мая 2018

Поскольку вы не добавляете полный код своей страницы JSP, в соответствии с трассировкой стека журналов, я думаю, причина в том, что:

Вы используете LocalDateTime, но не импортируете его, поскольку его пакет java.time и не импортируется по умолчанию в jsp.

Чтобы решить эту проблему, просто добавьте <%@ page import="java.time" %> вверху страницы JSP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...