PDA

View Full Version : فراخوانی نادرست view در spring mvc



sajjad4563
یک شنبه 12 بهمن 1393, 16:06 عصر
با سلام

من یه فرم ساده jsp دارم:

<form action="/MySpringMVCProject/submitAdmissionForm.html" method="post">
<p>
Student's Name: <input type="text" name="studentName" />
</p>
<p>
Student's Hobby: <input type="text" name="studentHobby" />
</p>
<input type="submit" value="Send Now" />
</form>

و این کنترلر من هست:

@Controller
public class AdmissionController {
...

@RequestMapping(value = "/submitAdmissionForm.html", method = RequestMethod.POST)
protected ModelAndView submitAdmissionForm(@RequestParam("studentName") String name, @RequestParam("studentHobby") String hobby) {
ModelAndView model2 = new ModelAndView("AdmissionSuccess");
model2.addObject("msg", "your name: " + name + " ,your hobby is: " + hobby);
return model2;
}

حالا کنترلر من بجای صدا زدن AdmissionSuccess.jsp ، میاد submitAdmissionForm.jsp رو صدا میزنه و مشخصه که ارور 404 میگیرم!

من میخوام AdmissionSuccess رو که بعنوان view معرفی کردمش رو صدا بزنه!

ahmad.mo74
یک شنبه 12 بهمن 1393, 16:25 عصر
محتویات web.xml و کانفیگ spring رو هم بذارید...

ویرایش :

فکر کنم مشکل از form هست، action رو به submitAdmissionForm.html تغییر بده درست میشه.

توی web.xml هم اینا باید باشه حتما :


<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>

sajjad4563
یک شنبه 12 بهمن 1393, 18:10 عصر
محتویات web.xml و کانفیگ spring رو هم بذارید...

ویرایش :

فکر کنم مشکل از form هست، action رو به submitAdmissionForm.html تغییر بده درست میشه.

توی web.xml هم اینا باید باشه حتما :


<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>


این فایل کانفیگ:

dispatcher:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd" >

<context:component-scan base-package="sajjad.htlo" />

<mvc:annotation-driven/>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResou rceViewResolver">
<property name="prefix">
<value>/WEB-INF/</value>
</property>

<property name="suffix">
<value>.jsp</value>
</property>
</bean>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">

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


<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>

</web-app>

اون راه حل هم مشکل رو حل نکرد

ahmad.mo74
یک شنبه 12 بهمن 1393, 19:43 عصر
مشکلت اینجاس :


<bean id="viewResolver" class="org.springframework.web.servlet.view.Intern alResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/</value>
</property>

<property name="suffix">
<value>.jsp</value>
</property>
</bean>


دقیقا نمیدونم برای چی prefix رو /WEB-INF/ گذاشتی!!؟؟ به جاش / بنویس.

کل کانفیگ هارو برای اطمینان میذارم :

mvc-dispatcher-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" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="sajjad.htlo"/>
<mvc:annotation-driven/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResou rceViewResolver"> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"/> </bean>
</beans>

web.xml :


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">


<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>


<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListe ner
</listener-class>
</listener>


</web-app>


form ات رو هم اینطوری بنویس :


<form action="submitAdmissionForm.html" method="post">
...

sajjad4563
یک شنبه 12 بهمن 1393, 21:26 عصر
مشکلت اینجاس :


<bean id="viewResolver" class="org.springframework.web.servlet.view.Intern alResourceViewResolver">
<property name="prefix">
<value>/WEB-INF/</value>
</property>

<property name="suffix">
<value>.jsp</value>
</property>
</bean>


دقیقا نمیدونم برای چی prefix رو /WEB-INF/ گذاشتی!!؟؟ به جاش / بنویس.

کل کانفیگ هارو برای اطمینان میذارم :

mvc-dispatcher-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" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="sajjad.htlo"/>
<mvc:annotation-driven/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResou rceViewResolver"> <property name="prefix" value="/"/> <property name="suffix" value=".jsp"/> </bean>
</beans>

web.xml :


<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">


<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value>
</context-param>


<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListe ner
</listener-class>
</listener>


</web-app>


form ات رو هم اینطوری بنویس :


<form action="submitAdmissionForm.html" method="post">
...



ممنونم از شما دوست عزیز ، مشکلم حل شد بالاخره!