java - Spring MVC 试图通过 url 传递变量。 @Path变量

标签 java spring spring-mvc

我正在尝试将一个 int 传递给我的 spring Controller ,根据我的阅读,我应该使用 @PathVariable 在 Controller 中捕获它。但到目前为止我所尝试的都没有奏效。我只是收到 404 错误,spring 甚至没有记录它失败。

这是我的 Controller 代码

@RequestMapping(value = "common/taskSummary/{taskId}")
public ModelAndView taskSummary(@PathVariable int taskId) {
    // Get user from Spring security
    User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
    ModelAndView modelAndView = new ModelAndView("safeSiteHome");
    modelAndView.addObject("username", user.getUsername());
    return modelAndView;
}   

我也尝试过用“common/taskSummary.do/{taskId} 映射它,但这也不起作用。

但是没有任何路径变量的映射与“common/taskSummary.do”确实有效。

这是我的 web.xml

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

<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> 

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/applicationContext.xml
        /WEB-INF/spring-security.xml  
    </param-value>
</context-param>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>           
<resource-ref>
    <description>ArcFlashMap DB Connection</description>
    <res-ref-name>jdbc/AFM_DB</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref>    
<servlet>
    <servlet-name>LoadResourcesServlet</servlet-name>
    <servlet-class>ie.premiumpower.services.reports.common.LoadResourcesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<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>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.json</url-pattern>
</servlet-mapping>
<session-config>
    <session-timeout>
        30
    </session-timeout>
</session-config>

发现问题。我的 web.xml 只将“.do”url 映射到 spring,所以我必须将 .do 添加到 @RequestMapping url“common/taskSummary/{taskId}.do”。

或者我可以更改 web.xml 以将“/”映射到 spring 调度程序。

谢谢

最佳答案

问题是您的调度程序映射到 *.do。因此 URL 模式必须以 .do 结尾才能处理。

话虽如此,common/taskSummary/{taskId}.do 将为您解决。

关于java - Spring MVC 试图通过 url 传递变量。 @Path变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29281747/

相关文章:

java - Java 中的 hasNextDouble 方法出现问题

java - 如何使用 Spring Batch 并行步骤分割流配置上述用例?

spring - Spring MVC-HttpSession.setAttribute和model.addObject之间的区别

java - Struts 排除带有 Spring 的图案

java - 设置为更新时,Spring Boot mvc java 应用程序无法运行

java - 在 Spark 中读取文件时出现错误 : java. lang.NoSuchMethodError : com. google.common.base.Stopwatch.elapsedMillis()J ?

java - ReSTLet:GET 请求使用访问多个资源的查询

java - 将 Spring 3.1 项目更新为 hibernate4 现在找不到当前线程的 session

java - 我需要帮助使正则表达式正确

spring - 何时使用@Pointcut & @Before、@After AOP 注解