2014-04-14 7 views
7

मैंने स्प्रिंग एमवीसी और टॉमकैट का अध्ययन शुरू किया।मुझे उत्तर नहीं मिल रहा है जो 'डिस्पैचर सर्वलेट' नाम के साथ सर्वलेट में नाम 'इंडेक्स' के साथ दृश्य को हल नहीं कर सका

मैं स्प्रिंग और थाइमेलीफ वेवटेम्प्लेट इंजन द्वारा एचटीएमएल पेज प्रदर्शित करना चाहता हूं।

लेकिन यह काम नहीं करता है।

मेरे कॉन्फ़िगरेशन फ़ाइल और नियंत्रक के नीचे।

web.xml फ़ाइल

<servlet> 
    <servlet-name>DispatcherServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>DispatcherServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

<filter> 
    <filter-name>EncodingFilter</filter-name> 
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 
    <init-param> 
     <param-name>encoding</param-name> 
     <param-value>UTF-8</param-value> 
    </init-param> 
</filter> 
<filter-mapping> 
    <filter-name>EncodingFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

/webapp/WEB-INF/DispatcherServlet-serlvet.xml

<context:component-scan base-package="com.everblog.controller" /> 

<!-- ViewResolver be configured by thymeleaf --> 
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ServletContextTemplateResolver"> 
    <property name="prefix" value="/WEB-INF/view/" /> 
    <property name="suffix" value=".html" /> 
    <property name="templateMode" value="HTML5" /> 
    <property name="characterEncoding" value="UTF-8" /> 
</bean> 

<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine"> 
    <property name="templateResolver" ref="templateResolver" /> 
</bean> 

<bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver"> 
    <property name="templateEngine" ref="templateEngine" /> 
    <property name="order" value="1" /> 
    <property name="viewNames" value="*.html" /> 
</bean> 

और नियंत्रक

@Controller 
public class PostItemController { 

    @RequestMapping(value="/hello", method = RequestMethod.GET) 
    public String helloWorld() { 
     System.out.println("IS IN"); 
     return "index"; 
    } 
} 

मैं स्थानीय होस्ट टाइप किया 9 पर 9 000/हैलो rowser, तो ब्राउज़र इस त्रुटि संदेश प्रदर्शित करता है। HTTP स्थिति 500 ​​- नाम के साथ 'DispatcherServlet'

प्रकार अपवाद रिपोर्ट

संदेश नाम 'के साथ सर्वलेट में नाम' सूचकांक 'के साथ देखने को हल नहीं किया जा सका सर्वलेट में नाम' सूचकांक 'के साथ देखने को हल नहीं किया जा सका डिस्पैचर सर्वलेट '

विवरण सर्वर को एक आंतरिक त्रुटि का सामना करना पड़ा जिसने इसे इस अनुरोध को पूरा करने से रोका।

अपवाद

javax.servlet.ServletException: (नाम के साथ 'DispatcherServlet' org.springframework.web.servlet.DispatcherServlet.render सर्वलेट में नाम 'सूचकांक' के साथ देखने को हल नहीं किया जा सका DispatcherServlet जावा: 1190) org.springframework.web.servlet.DispatcherServlet.processDispatchResult (DispatcherServlet.java:992) org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:939) org.springframework.web। servlet.DispatcherServlet.doService (DispatcherServle t.java:856) org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:953) org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:844) javax.servlet.http .HttpServlet.service (HttpServlet.java:621) org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:829) javax.servlet.http.HttpServlet.service (HttpServlet.java:728) संगठन। apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:88) org.springframework.web.filter.OncePerRequestFilter.doFilter (एक बारPerRequestFilter.java:107) नोट रूट कारण का पूरा स्टैक ट्रेस I Apache टॉमकैट/7.0.50 लॉग में उपलब्ध है।

अनुक्रमणिका।एचटीएमएल/वेबएप/वेब-आईएनएफ/व्यू/

पर क्या है मैं अब और कॉन्फ़िगर करना चाहता हूं?

+0

आप "index.html" लौटने के लिए की जरूरत है (http://stackoverflow.com/ से लिया प्रश्न/13105048/वसंत-साथ-थाइमेलीफ-व्यू-एकीकरण) – Luciano

+0

'लोकलहोस्ट: 9 000/हैलो 'क्या आप यूआरएल में संदर्भ नाम (प्रोजेक्ट नेम) खो रहे हैं? –

उत्तर

10

ThymeleafViewResolver#setViewNames(String[]) के जावाडोक पर एक नज़र डालें। इसमें कहा गया है

नाम पैटर्न है कि निर्धारित करने के लिए एक नियंत्रक द्वारा लौटाए गए एक दृश्य के नाम इस समाधानकर्ता या नहीं द्वारा समाधान हो जाएगा लागू किया जाएगा का एक सेट निर्दिष्ट करें।

दृश्य का नाम अपने @Controller हैंडलर विधि रिटर्न

return "index"; 

नाम देखने यह निश्चित रूप से पैटर्न

*.html 
से मेल नहीं खाता है

आप का उपयोग करना होगा

return "index.html"; 

वसंत के लिए अपनेका उपयोग करें, हालांकि यह बाद के चरण में विफल हो जाएगा क्योंकि इस तरह के हल किए गए जेएसपी मौजूद नहीं हैं।

इसके बजाय, बस viewNames<property> से छुटकारा पाएं या इसके अनुसार इसे और @Controller विधि को ठीक करें।

-1

शायद चींटी पैटर्न आप प्रेषक को सर्वलेट में दे दिया है आपके विचार समाधानकर्ता दृश्य को हल करने ... आपके प्रेषक ने सर्वलेट में / बजाय /* को यूआरएल ढांचा बदलने की अनुमति नहीं दे रहा है।

+0

जब तक उनके पास एक डिफ़ॉल्ट हैंडलर कॉन्फ़िगर नहीं किया जाता है, तो आपका सुझाव चीजों को और खराब कर देगा। '/ * 'पैटर्न जेएसपी सर्वलेट को लेट करने के बजाए दृश्य को भी संभालेगा। –

0

पिछले सेम अकेले इस कोड के साथ thymeleaf समाधानकर्ता में() की जगह यह HelloWorld पर हो सकता है कि काम करेंगे ठीक

<beans:bean class="org.thymeleaf.spring3.view.ThymeleafViewResolver"> 
    <beans:property name="templateEngine" ref="templateEngine" /> 

</beans:bean> 
संबंधित मुद्दे