我为控制器的方法定义了以下@RequestMapping。
@RequestMapping(value = "{transactionId}/continue", params = "submitButton=enterApplication")
在 JSP 中,我定义了以下按钮:
<button type="submit" name="submitButton" id="button.enterApplication" value="enterApplication">
Enter Application
</button>
现代浏览器一切正常。在请求中提交以下内容:
submitButton=enterApplication
但它看起来像 IE7(可能更早),浏览器正在提交按钮标签的内容而不是 value 属性。因此,在这种情况下,它提交以下内容:
submitButton=Enter+Application
请注意“+”符号而不是空格(使用 Fiddler,我能够检查请求并看到上面的参数/值中有“+”)。我很确定这是我的问题所在 - 但我不知道该怎么做。我尝试使用以下@RequestMapping 添加另一种方法:
@RequestMapping(value = "{transactionId}/continue", params = "submitButton=Enter+Application")
但这似乎不起作用。我继续收到以下错误:
javax.servlet.ServletException: No adapter for handler [...]: Does your handler implement a supported interface like Controller?
有没有办法确定 Spring 正在执行什么逻辑来将请求中提交的内容与 @RequestMapping 中定义的参数进行比较?我认为比较空格或“+”字符肯定有问题。
*注意:问题可能不一定是加号 - 这只是我最初的想法。如果我能弄清楚 Spring 是如何确定处理程序的,我也许能够弄清楚它为什么不匹配。