0

I am trying to add Apache Tiles for CRUD application.Am getting Following Error

HTTP Status 500 - Could not resolve view with name 'addEmployee' in servlet with name 'HelloHibernate'

type Exception report

message Could not resolve view with name 'addEmployee' in servlet with name 'HelloHibernate'

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Could not resolve view with name 'addEmployee' in servlet with name 'HelloHibernate'
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1042)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:798)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:716)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:647)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:552)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

web.xml

 <?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
  <servlet>
    <servlet-name>HelloHibernate</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/HelloHibernate-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>HelloHibernate</servlet-name>
    <url-pattern>*.html</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

tiles.xml

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
  <tiles-definitions> 
  <definition name="base.definition" template="/WEB-INF/views/mainTemplate.jsp">
    <put-attribute name="title" value=""></put-attribute>
    <put-attribute name="header" value="/WEB-INF/views/header.jsp"></put-attribute>
    <put-attribute name="body" value=""></put-attribute>
    <put-attribute name="footer" value="/WEB-INF/views/footer.jsp"></put-attribute>
  </definition>

  <definition name="base.definition" template="addEmployee">
  <put-attribute name="title" value="Employee Data Form"></put-attribute>
  <put-attribute name="body" value="/WEB-INF/views/addEmployee.jsp"></put-attribute>
  </definition>

  <definition name="base.definition" template="employeesList">
  <put-attribute name="title" value="/WEB-INF/views/employeesList.jsp"></put-attribute>
  </definition>
  </tiles-definitions> 
Elango Mani
  • 354
  • 4
  • 21

1 Answers1

1

You have your Tiles declarations a bit muddled up. Heres how I would do it if I understand your intentions correctly.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
   "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
   "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions> 
    <definition name="base.definition" template="/WEB-INF/views/mainTemplate.jsp">
        <put-attribute name="title" value=""></put-attribute>
        <put-attribute name="header" value="/WEB-INF/views/header.jsp"></put-attribute>
        <put-attribute name="body" value=""></put-attribute>
        <put-attribute name="footer" value="/WEB-INF/views/footer.jsp"></put-attribute>
    </definition>

    <definition name="addEmployee" extends="base.definition">
        <put-attribute name="title" value="Employee Data Form"></put-attribute>
        <put-attribute name="body" value="/WEB-INF/views/addEmployee.jsp"></put-attribute>
    </definition>

    <definition name="employeesList" extends="base.definition">
        <put-attribute name="title" value="/WEB-INF/views/employeesList.jsp"></put-attribute>
    </definition>
</tiles-definitions> 

In the last 2 definitions I changed the template attributes to be nameattributes and changed the existing name attributes to be extends attributes.

Niall Thomson
  • 789
  • 4
  • 8