私は次のコントローラーを持っています...
@Controller
@RequestMapping(value = "/userManagement")
public class UserManagementController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public Object home(Locale locale, Model model) {
logger.info("User management view controller loaded...");
return "userManagement";
}
@RequestMapping(value = "/createUserView", method = RequestMethod.GET)
public Object createUser(Locale locale, Model model) {
logger.info("create controller loaded...");
return "createUser";
}
私のサーブレットコンテキストは次の値で設定されています...
<beans:bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<beans:property name="prefix" value="/WEB-INF/views/" />
<beans:property name="suffix" value=".jsp" />
</beans:bean>
次に行くとhttp://localhost:8080/myapp/userManagement
、まさに私が望むビュー userManagement.jsp を取得します...
しかし、私が行くとhttp://localhost:8080/myapp/userManagement/createUserView
、404エラーが発生します。
NetworkError: 404 Not Found - http://localhost:8080/myapp/userManagement/createUserView"
上記とまったく同じように requestMapping を設定し、/WEB-INF/views に createUser.jsp と userManagement.jsp があるため、なぜこれが発生するのかわかりません。
spring mvc からのビューの提供に関して、私が間違っていることはありますか?
ありがとう、
編集: 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: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">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml
/WEB-INF/spring/security-app-context.xml
/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</context-param>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
EDIT2:
また、Ajax を使用するのではなく、ブラウザーのアドレスに直接アクセスすると (myapp/userManagement/createUserView に移動すると、エラーが発生します...
HTTP ステータス 404 - /myapp/WEB-INF/views/userManagement/createUserView.jsp そのため、参照しているディレクトリが高すぎるように見えます (ただし、ファイル名も間違っています)。
EDIT3。
わかりました、次のことをしてもそうです..
@Controller
@RequestMapping(value = "/userManagement")
public class UserManagementController {
@RequestMapping(value = "/", method = RequestMethod.GET)
public Object home(Locale locale, Model model) {
logger.info("User management view controller loaded...");
return "createUser";
}
まだ userManagement.jsp ページが表示されているため、このリターンが正しく起動していないように見えますが、その理由はわかりません。ロガーの詳細は引き続きコンソールに送信されるため、実際にはそこに到達しています。springmvc が JSP を返す方法がおかしいだけです。