0

Can we use mvc:view-controller tag for displaying a tiles view.

Eg: If we have a tiles definition of the form definition,

name="userLogon.page" 
template="webapp/app/layout/baseLayoutExterior.jsp" 
extends="basePageDefinition"

Can we write mvc:view-controller path="/logon" view-name="userLogon.page" in our servlet.xml file.

I am getting an HTTP 404 RESOURCE NOT FOUND ERROR on this whereas a normal hello.jsp page is displayed without problems.

Please help i am stuck.

1 Answer 1

1

Yes

You need to add a TilesConfigurer and a TilesView

<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver"
    id="tilesViewResolver">
    <property name="viewClass"
        value="org.springframework.web.servlet.view.tiles2.TilesView" />
</bean>
<bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"
    id="tilesConfigurer">
    <property name="definitions">
        <list>
            <value>/WEB-INF/layouts/layouts.xml</value>
            <!-- Scan views directory for Tiles configurations -->
            <value>/WEB-INF/views/**/views.xml</value>
        </list>
    </property>
</bean>

Example Layout.xml located in webapp/WEB-INF/layouts

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">

<tiles-definitions>

  <definition name="default" template="/WEB-INF/layouts/default.jspx">
    <put-attribute name="header" value="/WEB-INF/views/header.jspx" />
    <put-attribute name="menu" value="/WEB-INF/views/menu.jspx" />
    <put-attribute name="footer" value="/WEB-INF/views/footer.jspx" />
  </definition>

</tiles-definitions>

one of the view.xml's located in webapp/WEB-INF/views/bookmarks

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
    <definition extends="default" name="bookmarks/show">
        <put-attribute name="body" value="/WEB-INF/views/bookmarks/show.jspx" />
    </definition>       
    <definition extends="default" name="bookmarks/list">...</definition>
    <definition extends="default" name="bookmarks/create">...</definition>      
    <definition extends="default" name="bookmarks/update">...</definition>
</tiles-definitions>

One controller method:

@RequestMapping("/bookmarks")
@Controller
public class BookmarkController {
    ...
    /** Return the show page. */
    @RequestMapping(method = RequestMethod.GET, value = "/{id}")
    public ModelAndView show(@PathVariable("id") long bookmarkId) {
        return new ModelAndView("bookmarks/show", "bookmark", bookmarkDao.getBzId(bookmarkId));
    }
}
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.