gpt4 book ai didi

spring - 否定 Spring Controller 的 RequestMapping 中的参数

转载 作者:行者123 更新时间:2023-12-01 15:11:23 24 4
gpt4 key购买 nike

你好,

我的 Controller 中有两种方法,如果参数是某个值,我试图让一种方法触发,如果参数不是该值,则另一种方法触发。当参数等于特定值时,我的“not”方法就会触发。

根据(我的理解)this我正确地写了表达式。下面是这两种方法的签名:

@RequestMapping(value = "/doit", params= {"output=grouped", "display!=1"})
public @ResponseBody HashMap<String, Object> doSomething(
@RequestParam("text") String text,
@RequestParam("display") String display)
{
// this method runs if display=1 but why?
}


@RequestMapping(value = "/doit", params= {"output=grouped", "display=1"})
public @ResponseBody HashMap<String, Object> doSomethingElse(
@RequestParam("text") String text)
{
// this method is not being called when display=1...why not?
}

我启用了 Spring 调试日志记录,我看到 Spring 在哪里将参数转换为值为“1”的 RequestParam 字符串。但是,在下一行,它决定将其映射到错误的方法。

我究竟做错了什么?

谢谢!

最佳答案

这不是你的错:这是一个错误 SPR-8059 .目前它在版本 3.1M2 和 svn Trunk rev 4408 中得到修复。 .

解决方法是不使用 !=@RequestMapping .相反,你必须用 if 来做这件事。用手:

@RequestMapping(value = "/doit", params= {"output=grouped")
public @ResponseBody HashMap<String, Object> acceptAll(
@RequestParam("text") String text,
@RequestParam("display") String display) {
if("1".equals(display) {
return doSomethingElse(text);
} else {
return doSomething(text,display);
}
}

关于spring - 否定 Spring Controller 的 RequestMapping 中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6657807/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com