我主要使用基于JSF的项目中的遗留代码,并且在支持bean中有很多很长的类和方法.
这一直在困扰着我,但是当我寻找可以做的事情的时候,我所能提出的大部分时间都是将一个长方法划分为n个小方法.这给你一个很长的课程,有时甚至更难阅读.
那么你怎么做才能让你的支持bean简洁明了?或者你为一个页面保留一个大的支持bean?有没有最好的做法?
我假设这与jsf没有直接关系,而是与你用控制器"支持"视图的任何模型有关.所以一般建议也会有所帮助.
如果我在课堂上使用多级网址,我会收到以下异常@RequestMapping("/api/v0.1")
:
java.lang.IllegalStateException: Ambiguous mapping found. Cannot map 'userController'
bean method getUsers()|to {[/api/v0.1]}: There is already 'userController' bean
method getUser(java.lang.String) mapped.
Run Code Online (Sandbox Code Playgroud)
这就像方法级别映射完全没有考虑在内一样.
但是如果我把@RequestMapping("/api")
ie删除/v0.1
部分就可以了.
以下是针对最小情况的配置:
@Controller
@RequestMapping("/api/v0.1")
public class UserController {
@RequestMapping(value = "/users")
@ResponseBody
public List<User> getUsers() {
return null;
}
@RequestMapping(value = "/users/{username}")
@ResponseBody
public User getUser(@PathVariable String username) {
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
web.xml中
<servlet-mapping>
<servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
servlet的context.xml中:
<!-- Configures the @Controller programming model -->
<mvc:annotation-driven />
<!-- Forwards …
Run Code Online (Sandbox Code Playgroud)