我一直在尝试设置一个非常简单的控制器/视图,但无法使其工作。在我的web.xml
中,我定义了一个<servlet>
被调用的servlet-context.xml
,它运行正常。在servlet-context.xml
中,我设置了:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc"
<...other stuff in here... />
<mvc:annotation-driven />
除其他事项外。我的理解是,这就是使用@
注释所需的全部内容。
在我的控制器中,我有:
@RequestMapping(value="/student/{username}/", method=RequestMethod.GET)
public String adminStudent(@PathVariable String username, @RequestParam String studentid) {
return "student";
}
在我student.jsp
看来,我有:
<p>This is the page where you would edit the stuff for ${username}.</p>
<p>The URL parameter <code>studentid</code> is set to ${studentid}.</p>
当我向 发出请求时http://localhost:8080/application/student/xyz123/?studentid=456
,我得到了我期望的视图,但所有变量都是空白或 null:
<p>This is the page where you would edit the stuff for .</p>
<p>The URL parameter <code>studentid</code> is set to .</p>
我怀疑这是我的web.xml
或servlet-context.xml
设置方式的问题,但我在任何地方都找不到罪魁祸首。据我所知,任何日志中都没有显示任何内容。
更新:我的代码基于spring-mvc-showcase的这一部分:
@RequestMapping(value="pathVariables/{foo}/{fruit}", method=RequestMethod.GET)
public String pathVars(@PathVariable String foo, @PathVariable String fruit) {
// No need to add @PathVariables "foo" and "fruit" to the model
// They will be merged in the model before rendering
return "views/html";
}
...这对我来说很好。我不明白为什么这个例子有效,但我的没有。是因为他们正在做一些不同的事情servlet-context.xml
吗?
<annotation-driven conversion-service="conversionService">
<argument-resolvers>
<beans:bean class="org.springframework.samples.mvc.data.custom.CustomArgumentResolver"/>
</argument-resolvers>
</annotation-driven>