2011-08-10 42 views
2

控制器:Java中,春天,Apache的瓷磚錯誤:無法名爲 '聯繫人' 中的servlet名爲 '春天' 解決視圖

@Controller 
@SessionAttributes 
public class ContactController { 

    @RequestMapping(value = "/addContact", method = RequestMethod.POST) 
    public String addContact(@ModelAttribute("contact") 
          Contact contact, BindingResult result) { 

     System.out.println("First Name:" + contact.getFirstName() + 
       "Last Name:" + contact.getLastName()); 

    return "redirect:contacts.html"; 
    } 

    @RequestMapping("/contact") 
    public ModelAndView showContacts() { 

     return new ModelAndView("contact", "command", new Contact()); 
    } 
} 

這是我tiles.xml:

<tiles-definitions> 
    <definition name="base.definition" 
     template="/WEB-INF/jsp/layout.jsp"> 
     <put-attribute name="title" value="" /> 
     <put-attribute name="header" value="/WEB-INF/jsp/header.jsp" /> 
     <put-attribute name="menu" value="/WEB-INF/jsp/menu.jsp" /> 
     <put-attribute name="body" value="" /> 
     <put-attribute name="footer" value="/WEB-INF/jsp/footer.jsp" /> 
    </definition> 

    <definition name="contact" extends="base.definition"> 
     <put-attribute name="title" value="Contact Manager" /> 
     <put-attribute name="body" value="/WEB-INF/jsp/contact.jsp" /> 
    </definition> 

錯誤是這樣的:

org.apache.jasper.JasperException: javax.servlet.ServletException: Could not resolve view with name 'contact' in servlet with name 'spring' 
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:584) 
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:456) 
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389) 
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333) 
javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 

隨意問任何更多的源代碼

回答

5

在你的last question中,你表明你使用了帶有前綴和後綴的UrlBasedView解析器。

刪除前後綴。

這應該是enogth:

<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> 

BTW:這個configruation allowes的瓷磚配置文件的兩個tzps(僅適用於有sermatic不同)

  • /WEB-INF/layouts/layouts.xml包含了所有的(讓通話它)「基本定義」
  • the /WEB-INF/views/**/views.xml cont ains擴展「基本定義」的具體定義(例如「聯繫人」定義) - 您可以爲每個文件夾分別使用view.xml - 如果對視圖進行分組,則這是有用的,例如所有視圖(創建,更新,展示和列表)爲每個實體,在separete文件夾

如果不需要此功能,只需刪除該行。

+0

太棒了!感謝兄弟,是的,我曾經使用JSTL viewresolver,JSTL需要有這些前綴和後綴..但現在嘗試這個瓷磚的事情,它的工作! – Jaanus