2009-07-28 14 views
22

का उपयोग कर कस्टम 404 मैंने नीचे वेब.एक्सएमएल सेट अप किया है। मेरे पास एक एनोटेशन-आधारित नियंत्रक भी है, जो किसी भी यूआरएल पैटर्न में ले जाता है और उसके बाद संबंधित जेएसपी (मैंने इसे -servlet.xml में सेट किया है) पर जाता है। हालांकि, अगर मैं किसी ऐसे पृष्ठ पर जाता हूं जो .html (और जिसका jsp मौजूद नहीं है) में समाप्त होता है, तो मुझे कस्टम 404 पृष्ठ नहीं दिखाई देता है (और लॉग में निम्न त्रुटि देखें)। कोई भी पृष्ठ जो .html में समाप्त नहीं होता है, मैं कस्टम 404 पेज देख सकता हूं।स्प्रिंग डिस्पैचर सर्विलेट

डिस्पैचर सर्वलेट के माध्यम से जाने वाले किसी भी पृष्ठ के लिए कस्टम 404 पृष्ठ के लिए मैं कॉन्फ़िगर कैसे कर सकता हूं?

यह भी जोड़ना है कि अगर मैं अपना त्रुटि पृष्ठ एक स्थिर पृष्ठ (यानी त्रुटि.htm) पर सेट करता हूं, तो यह काम करता है, लेकिन अगर मैं इसे jsp (यानी error.jsp) में बदलता हूं, तो मुझे IllegalStateException मिलता है। किसी भी सहायता की सराहना की जाएगी।

लॉग त्रुटि

Caused by: java.lang.IllegalStateException: getOutputStream() has already been called for this response 
at org.apache.catalina.connector.Response.getWriter(Response.java:606) 
at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:195) 
at org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:124) 

नियंत्रक

@RequestMapping(value = {"/**"}) 

public ModelAndView test() { 

    ModelAndView modelAndView = new ModelAndView(); 

    return modelAndView; 
} 

web.xml

<servlet> 
<servlet-name>my_servlet</servlet-name> 
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
</servlet> 

...

<servlet-mapping> 
    <servlet-name>my_servlet</servlet-name> 
    <url-pattern>*.html</url-pattern> 
</servlet-mapping> 

...

<error-page> 
    <error-code>404</error-code> 
    <location>/error.html</location> 
</error-page> 
+0

प्रयास करें इस -> http://ekiras.blogspot.in/ 2015/02/कस्टम-त्रुटि -404-त्रुटि-पेज-इन-वसंत-एमवीसीएचटीएमएल –

उत्तर

34

एक विकल्प आपके प्रेषक ने सर्वलेट के माध्यम से अपने सभी त्रुटि पृष्ठों मैप करने के लिए है।

एक नया HTTP त्रुटि नियंत्रक बनाएँ:


@Controller 
public class HTTPErrorController { 

    @RequestMapping(value="/errors/404.html") 
    public String handle404() { 
     return "errorPageTemplate"; 
    } 

    @RequestMapping(value="/errors/403.html") 
    ... 

}

मानचित्र web.xml में त्रुटि पृष्ठों

<error-page> 
    <error-code>404</error-code> 
    <location>/errors/404.html</location> 
</error-page>
+0

@ स्टेफन हैबरल, अपने सरलीकृत संस्करण को एक नए उत्तर के रूप में पोस्ट करने के बजाय @ रोब की पोस्ट क्यों बदलें? – sarnold

+1

क्या कोई यह सत्यापित कर सकता है कि यह समाधान काम करता है? यह मेरे लिए नहीं है (वसंत 3.0.5) – Jason

+0

यह कोड उदाहरण हमारे कुछ अनुप्रयोगों से लगभग क्रियात्मक है और उम्मीद के अनुसार काम करता है। आपकी क्या समस्या हैं? मैं डीबग मदद कर सकता हूँ। –

संबंधित मुद्दे