UrlFilenameViewController لا يُرجع العرض (Spring-MVC)
-
06-07-2019 - |
سؤال
وفقًا لواجهة برمجة تطبيقات Spring Framework
الغرض من UrlFilenameViewController هو:
يحول المسار الظاهري لعنوان URL إلى اسم طريقة عرض ويعيد طريقة العرض هذه
إذا طلبت /info.xhtml، فإن اسم العرض المنطقي الخاص به هو info
يرى UrlFilenameViewController توثيق
يتم تعيين كل من web.xml ووحدة التحكم وفقًا لـ
/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8">
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>smac</display-name>
<servlet>
<servlet-name>controller</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>controller</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
</web-app>
/WEB-INF/controller-servlet.xml
<?xml version="1.0" encoding="UTF-8">
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean class="org.springframework.web.servlet.view.InternalViewResolver">
<property name="prefix" value="/WEB-INF/output/"/>
<property name="suffix" value=".jsp"/>
</bean>
<bean class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>
</beans>
يتم نشر تطبيق smac الخاص بي بشكل جيد.
لذا، إذا طلبت http://127.0.0.1:8080/smac/info.xhtml, ، يجب أن يقوم Spring-MVC بإرجاع /WEB-INF/output/info.jsp.لكني رأيت في وحدة التحكم ما يلي:
لم يتم العثور على تعيين لطلب HTTP باستخدام URI [/smac/info.xhtml] في DispatcherServlet بالاسم "وحدة التحكم"
يمكن أي واحد يساعدني ؟
يعتبر،
المحلول
تحتاج إلى تكوين أ HandlerMapping.الافتراضي هو BeanNameUrlHandlerMapping
والذي لن يفعل ما تريده إلا إذا قمت بربط وحدة التحكم الخاصة بك تحت الاسم المطابق لـ URI الخاص بك.ربما تريد SimpleUrlHandlerMapping
بدلاً من:
<bean name="myController" class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<value>
/**/*.xhtml=myController
</value>
</property>
</bean>