Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring@RequestParam不';t正确处理多个变量-示例测试用例_Java_Spring Mvc - Fatal编程技术网

Java Spring@RequestParam不';t正确处理多个变量-示例测试用例

Java Spring@RequestParam不';t正确处理多个变量-示例测试用例,java,spring-mvc,Java,Spring Mvc,下面给出的测试用例显示了一个简单的例子,其中我有两个参数paramA和paramB 如果调用/paramtesturl,则调用paramtest()方法 如果我为paramA输入true,则调用方法aTrue() 但是,当我为paramA和paramB输入true时,将调用方法bTrueNotA() 但是第三个@RequestMapping调用A=True和B=正确。当这两个参数都为true时,通过我的重新确认,应该调用aTrue() @RequestMapping("paramtest")

下面给出的测试用例显示了一个简单的例子,其中我有两个参数
paramA
paramB

  • 如果调用
    /paramtest
    url,则调用
    paramtest()
    方法
  • 如果我为
    paramA
    输入
    true
    ,则调用方法
    aTrue()
  • 但是,当我为
    paramA
    paramB
    输入
    true
    时,将调用方法
    bTrueNotA()
但是第三个
@RequestMapping
调用
A=True
B=正确
。当这两个参数都为true时,通过我的重新确认,应该调用
aTrue()

@RequestMapping("paramtest")
@ResponseBody
public String paramtest(){
    return  "<html><head></head><body>" +
                "<form action=paramtest method=post>" +
                    "paramA: <input type=text name=paramA /><br>" +
                    "paramB: <input type=text name=paramB /><br>" +
                    "<input type=submit>" + 
                "</form>" +
            "</body></html>";       
}

@RequestMapping(value="paramtest", params="paramA=true")
@ResponseBody
public String aTrue(){
    return "A=true";
}

@RequestMapping(value="paramtest", params={"paramB=true", "paramA!=true"})
@ResponseBody
public String bTrueNotA(){
    return "B=True; A!=true";
}
@RequestMapping(“paramtest”)
@应答器
公共字符串paramtest(){
返回“”+
"" +
“参数:
”+ “参数:
”+ "" + "" + ""; } @请求映射(value=“paramtest”,params=“paramA=true”) @应答器 公共字符串aTrue(){ 返回“A=true”; } @RequestMapping(value=“paramtest”,params={“paramB=true”,“paramA!=true”}) @应答器 公共字符串bTrueNotA(){ 返回“B=True;A!=True”; }
我想这可能是春天的一个bug。我尝试了以下映射:

@RequestMapping(value="/paramtest", params={"paramA=true"})
@ResponseBody
public String function A() { return "A"; }

@RequestMapping(value="/paramtest", params={"paramA=true", "paramB=foobar"})
@ResponseBody
public String function B() { return "B"; }

@RequestMapping(value="/paramtest", params={"paramA=!true", "paramB=foo"})
@ResponseBody
public String function C() { return "C"; }
使用现有表单和以下参数,我得到的结果如下:

paramA=true
A()按预期调用

paramA=true,paramB=foobar
B()按预期调用

paramA=not_true,paramB=foo
404页,而不是预期的C()

我在Tomcat控制台上遇到了以下错误:

WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver 142 - No matching handler method found for servlet request: path '/paramtest', method 'POST', parameters map['paramB' -> array<String>['foo'], 'paramA' -> array<String>['not_true']]
WARN org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver 142-找不到与servlet请求匹配的处理程序方法:路径'/paramtest',方法'POST',参数映射['paramB'->数组['foo'],'paramA'->数组['not_true']
所有这些都与Spring 3.0.5配合使用。请注意,
myParam=myValue
仅在Spring 3.0.4之后可用(未列出该选项)。而且,我不认为
!myParam=myValue
是有效的,因为该参数未在列表中列出


很抱歉,这不是您问题的解决方案,但想分享我的调查:)

您使用的是哪个版本的spring?如果将“paramA!=true”更改为“!paramA=true”,会发生什么?好主意。尝试了,但没有解决:当b=true和a=false(或a为nothing,null)时,调用paramtest()。当我使用paramA时=是的,它仅根据paramB调用该方法,但当我这样做时!paramA=true它从不调用bTrueNotA()。非常感谢您的评论。我也在他们的论坛上发了帖子,没有回应。关于这件事我会发一封邮件。知道其他人可以重新产生问题总是好的。这被确认为JIRA中的一个bug: