user1078516
user1078516

Reputation:

JavaScript file not working properly with servlet

I am working on a project in Tomcat and I am having an issue with a JavaScript file. I am trying to use pickadate.js and everything works fine when I put everything in an HTML file, but when I write a servlet that reads the html file and prints it to the response writer, the date picker does not work and I get the following JavaScript errors in the web console:

10:37:53.100 SyntaxError: missing : in conditional expression picker.js:349
10:37:53.102 SyntaxError: missing ; before statement picker.date.js:293
10:37:53.106 TypeError: $(...).pickadate is not a function AdminBlackout:24

Here is the HTML file that I am reading in the servlet:

<!doctype html>
<html>
    <head>

        <meta charset="utf-8">

        <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>

        <link rel="stylesheet" href="pickadate.js-3.4.0/tests/dev/style.css">
        <link rel="stylesheet" href="pickadate.js-3.4.0/lib/themes/default.css">
        <link rel="stylesheet" href="pickadate.js-3.4.0/lib/themes/default.date.css">

        <script src="pickadate.js-3.4.0/lib/picker.js"></script>
        <script src="pickadate.js-3.4.0/lib/picker.date.js"></script>
        <script src="pickadate.js-3.4.0/lib/legacy.js"></script>

    </head> 

    <body> 
        <input class="datepicker" type="text">

        <script type="text/javascript">
            $('.datepicker').pickadate();
        </script>

    </body>

</html>

The source that is generated by the servlet is exactly the same as above. When I load the html file directly in the browser, everything works fine and there are no JavaScript Errors. The pickadate.js-3.4.0 folder is in the root directory of my webapp. If anyone has any ideas on how to solve this problem, I would greatly appreciate it.

Update:

web.xml:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
  version="3.1"
  metadata-complete="true">


  <servlet>
    <servlet-name>Admin</servlet-name>
    <servlet-class>Admin</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Admin</servlet-name>
    <url-pattern>/admin</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>AdvisorAddTimeslots</servlet-name>
    <servlet-class>AdvisorAddTimeslots</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>AdvisorAddTimeslots</servlet-name>
    <url-pattern>/AdvisorAddTimeslots</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>AdvisorTimeslots</servlet-name>
    <servlet-class>AdvisorTimeslots</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>AdvisorTimeslots</servlet-name>
    <url-pattern>/AdvisorTimeslots</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>AdvisorCalendar</servlet-name>
    <servlet-class>AdvisorCalendar</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>AdvisorCalendar</servlet-name>
    <url-pattern>/AdvisorCalendar</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>AdvisorTimeslotDetails</servlet-name>
    <servlet-class>AdvisorTimeslotDetails</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>AdvisorTimeslotDetails</servlet-name>
    <url-pattern>/AdvisorTimeslotDetails</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>Homepage</servlet-name>
    <servlet-class>Homepage</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Homepage</servlet-name>
    <url-pattern>/Homepage</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>StudentSearch</servlet-name>
    <servlet-class>StudentSearch</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>StudentSearch</servlet-name>
    <url-pattern>/StudentSearch</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>SaveTimeslots</servlet-name>
    <servlet-class>SaveTimeslots</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>SaveTimeslots</servlet-name>
    <url-pattern>/SaveTimeslots</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>Admin</servlet-name>
    <servlet-class>Admin</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>Admin</servlet-name>
    <url-pattern>/Admin</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>AdminBlackout</servlet-name>
    <servlet-class>AdminBlackout</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>AdminBlackout</servlet-name>
    <url-pattern>/AdminBlackout</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>ConfirmTimeslot</servlet-name>
    <servlet-class>ConfirmTimeslot</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>ConfirmTimeslot</servlet-name>
    <url-pattern>/ConfirmTimeslot</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>SaveBlackout</servlet-name>
    <servlet-class>SaveBlackout</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>SaveBlackout</servlet-name>
    <url-pattern>/SaveBlackout</url-pattern>
  </servlet-mapping>

</web-app>

file structure:

-tomcat
  -webapps
    -SANDBOX
      -pickadate.js-3.4.0
      -test.html
      -web-inf

url: http://team01.no-ip.biz:8080/SANDBOX/AdminBlackout

Upvotes: 1

Views: 1015

Answers (1)

Pablo Lozano
Pablo Lozano

Reputation: 10342

It sounds like a encoding issue here:

When Java reads a file, take into account that it assumes that the encoding of the file is the default one of the system. In Windows it means you are using a variant of ISO-8859-1, not UTF-8, what is the default encoding for browsers. How is the servlet reading the file? What is the encoding used by the request?

Upvotes: 1

Related Questions