【问题标题】:Spring dispatcher url pattern not working [duplicate]Spring调度程序url模式不起作用[重复]
【发布时间】:2012-10-30 19:37:31
【问题描述】:

映射到控制器方法不起作用。转到 http://localhost:8080/teleseminars/telesem_live 会返回 404,这会显示在日志中:

2012-10-30 11:37:58,190 [http-8086-1] [警告] [org.springframework.web.servlet.DispatcherServlet.noHandlerFound(DispatcherServlet.java:947)] 找不到带有 URI 的 HTTP 请求的映射 [/teleseminars/telesem_live] DispatcherServlet 中的名称 '调度员'

感谢任何帮助。谢谢!

这里是控制器:

@Controller
public class TeleseminarsController {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    @RequestMapping(value= "/teleseminars/{page}/{series}", method = RequestMethod.GET) ///{page}/{series}
    public String getTele(@PathVariable("page") String page,
            @PathVariable("series") String series,
            HttpServletRequest request,
            final Model model) {

                //do stuff

            return page;
    }
}

我在 web.xml 上有这个

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>*.do</url-pattern>
    <url-pattern>/teleseminars/*</url-pattern>
</servlet-mapping>

【问题讨论】:

  • 为什么您的servlet-mapping 中有*.do 映射?一个url-pattern 和/* 就足够了——然后所有请求都将被分派到Spring MVC。
  • 谢谢,@romario333 - 我们使用的其他方法正在使用 .do 扩展名。这会将每个 URI 映射到 spring 调度程序,我当然不能这样做。我过去曾尝试过,它接受所有请求。所有图片、css、js、html等都被调度到Spring...

标签: java spring servlets spring-mvc


【解决方案1】:

你的servlet-mapping 吃掉了它的那一部分。在您的控制器中,您可能需要将@RequestMapping 更改为@RequestMapping(value= "/{page}/{series}", method = RequestMethod.GET)。我也遇到过这个问题。

【讨论】:

    【解决方案2】:

    您正在映射两个路径变量,因此 http://localhost:8080/teleseminars/telesem_live/foo 将匹配,但 http://localhost:8080/teleseminars/telesem_live 不匹配。

    【讨论】:

    • 谢谢,但尝试过并得到:No mapping found for HTTP request with URI [/teleseminars/telesem_live/SB_0] in DispatcherServlet with name 'dispatcher'
    【解决方案3】:

    您能否确保以下行在您的 context.xml 中可用

     <context:component-scan base-package="com.yourapp.controller" />
    

    在 Spring 3 或更高版本中,您仍然需要启用“自动组件扫描”(用于控制器)并手动声明“视图解析器”。我前段时间也遇到过这个问题。

    【讨论】:

    • 谢谢。是的,我已经有了那套。映射到 *.do 的效果很好。
    猜你喜欢
    • 2017-05-14
    • 2018-05-05
    • 2018-04-03
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多