こんにちは、次の URL で苦労しています。
<a href="/noticeOpen/2">dynamicLink</a>
次のコントローラーメソッドでマップします。
@RequestMapping(value="/noticeOpen/{quesId}")
public ModelAndView noticeOpen(@ModelAttribute("NoticeForm") NoticeForm noticeForm,
ModelMap model,
@PathVariable("quesId") Integer quesId){
System.out.println(quesId);
return new ModelAndView("/noticeOpen","noticeForm",noticeForm);
}
アンカーの動的リンクをクリックすると問題が発生し、コントローラーに制御が転送されず、代わりにブラウザーのアドレスバーに次のように表示されます。
http://127.0.0.1:8080/prj/noticeOpen/2/WEB-INF/pages/noticeOpen.jsp
さらに、applicationContext.xml に次のマッピングがあります。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>WEB-INF/pages/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
コントローラーの @RequestMapping から {quesId} を削除し、メソッド署名から @PathParam を削除すると、これはすべて正常に機能します (アンカーから questionId も削除します)。
http://127.0.0.1:8080/prj/noticeOpen
しかし、それは動的に聞こえず、私の要件を満たしません。
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:jsp="http://java.sun.com/xml/ns/javaee/jsp" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
<display-name>Spring Web MVC Application</display-name>
<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>/</url-pattern>
</servlet-mapping>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
アップデート
新しいコントローラーを作成し/noticeOpen/{quesId}
、コントロールを取得しましたが、次のメソッドの動作を理解できません。以下の NoticeController を見て、その下に結果を表示してください。
@Controller
public class NoticeController {
@RequestMapping(value="/noticeOpen/{quesId}")
public ModelAndView noticeOpen(@ModelAttribute("NoticeForm") NoticeForm noticeForm,ModelMap model,@PathVariable("quesId") Integer quesId){
return new ModelAndView("noticeOpen","noticeForm",noticeForm);
}
@RequestMapping(value="/noticeOpen")
public ModelAndView noticeOpen(@ModelAttribute("NoticeForm") NoticeForm noticeForm,ModelMap model){
return new ModelAndView("noticeOpen","noticeForm",noticeForm);
}
@RequestMapping(value="/noticeOpen")
それは私を正しいnoticeOpen.jsp
@RequestMapping(value="/noticeOpen/{quesId}")
にリダイレクトしますそれは私を次のエラーページにリダイレクトします
HTTP Status 404 - /prj/noticeOpen/WEB-INF/pages/noticeOpen.jsp
type Status report
message /prj/noticeOpen/WEB-INF/pages/noticeOpen.jsp
description The requested resource is not available.
Apache Tomcat/6.0.36