当前位置: 首页 > 面试题库 >

Spring MVC RequestMapping匹配错误的URL

艾泰
2023-03-14
问题内容

我正在为一个Web应用程序构建一个REST API,并且遇到了RequestMapping问题。

基本上有用户,这些用户被分组到各个域中。当他们使用系统时,一些信息将存储在一个名为“会话”的对象中,并写入数据库。

我有以下网址:

1) **http://server.com/api/v1/domain/ domainName /
sessions-**显示有关域中所有用户的所有会话的信息。

2) **http://server.com/api/v1/domain/ domainName / user / userName /
sessions-**显示有关特定用户会话的信息。

我正在使用spring 3.0.5,并在我的控制器类中声明了2个处理程序:

@RequestMapping(value = "/{domainId}/sessions", method=RequestMethod.GET)
public void findSessions(@PathVariable final String domainId) {
   ...
}

@RequestMapping(value = "/{domainId}/user/{username}/sessions", method=RequestMethod.GET)
public void findUserSessions(
        @PathVariable final String domainId,
        @PathVariable final String username) {
   ...
}

我正在使用混合控制器映射:SimpleUrlHandlerMapping +注释

使用SimpleUrlHandlerMapping指定控制器的基本路径:

<property name="mappings">
    <value>
    /api/v1/domain/** = api.DomainsController
    </value>
</property>

问题在于两个URL都由第一种方法处理。对于URL 2,用户名绑定到 domainId pathvariable,从而制动方法逻辑。

但是,如果我在请求映射中指定完整路径,则可以正常工作。

@RequestMapping(value = "/api/v1/domain/{domainId}/sessions", method=RequestMethod.GET)
@RequestMapping(value = "/api/v1/domain/{domainId}/user/{username}/sessions", method=RequestMethod.GET)

问题答案:

我认为最好不要混合使用SimpleUriHandlerMapping和RequestMapping方法。我认为他们不是要一起工作。

我认为您想要的只是/ api / v1 / domain的类级别RequestMapping,然后是个别情况的方法级别映射。

因此,换句话说,删除SimpleUrlHandlerMapping条目并改为执行以下操作:

@Controller
@RequestMapping(value = "/api/v1/domain")
html" target="_blank">public class DomainsController {

@RequestMapping(value = "/{domainId}/sessions", method=RequestMethod.GET)
public void findSessions(@PathVariable final String domainId) {
   ...
}

@RequestMapping(value = "/{domainId}/user/{username}/sessions", method=RequestMethod.GET)
public void findUserSessions(
        @PathVariable final String domainId,
        @PathVariable final String username) {
   ...
}

}

这告诉Spring该控制器负责所有以/ api / v1 / domain开头的请求,然后方法级别的请求映射与此相对。



 类似资料:
  • 我刚刚开始学习ANTLR4 lexer规则。我的目标是为Java属性文件创建一个简单的语法。以下是我目前掌握的信息:

  • 问题出在行collections.sort(acoesProcessar);我得到的信息是: 绑定不匹配:类型集合的泛型方法不适用于参数()。推断的类型不是有界参数

  • 我让我的应用程序工作正常,然后处理了这个xml文件中的颜色,现在出现了这个错误,我将发布带有错误信息的xml文件代码。我该如何解决这个问题? 这是错误 E/EGL_emulation:tid 2805:eglSurfaceAttrib(1146):错误0x3009(EGL_BAD_MATCH)W/OpenGLRenler:未能在表面上设置EGL_SWAP_BEHAVIOR0x942c4ba0,错误

  • 问题内容: 正则表达式后给我错误 请求字符串在哪里 任何帮助,将不胜感激。 问题答案: 尚未尝试匹配。先致电再致电。 输出:

  • 问题内容: 我试图在Swift中使用JSONDecoder将JSON转换为Structs,所以我编写了所有Structs,将它们修改了几个小时,但它仍然给我这个错误。我不知道是否有办法查看给出此信息的行。我将在下面发布我的struct,并在其后发布Json File链接。 完整的错误描述是: typeMismatch(Swift.Dictionary ,Swift.DecodingError.Co

  • 我有这个代码,我想捕捉字母异常,但它一直有以下错误: 这是我的代码:

  • 我的Arduino代码: 我的处理代码: 在这里,我无法将arduino上的数据发送到processing,因为总是会出现一个错误:类型不匹配处理。电视连续剧Serial与java不匹配。lang.String,因为有两条语句: 我在网上查了一下,但是每个人都使用相同的代码将arduino与处理连接起来。我的处理代码有什么问题?arduino代码正常工作。