我正在重构遗留应用程序以使用 Spring MVC。我的所有 Controller (旧版)都返回一个 Model 类型的对象,我的旧版调度程序写入 model.getContent() 的输出,方法 getContent 进行内部处理并返回一个 json 字符串。我有数百个 Controller ,不想重写它们。是否可以编写自定义 View 处理程序并将其包含在 spring servlet 配置中?
示例 Controller :
public UserList extends BasicAction {
@Autowired
UserService userService;
@Autowired
UserCommand userCommand;
@Override
public Model getModel(Request req, Response resp)
throws ServletException, IOException {
Model model = new Model();
List<User> users;
try {
users = userService.getUsers((UserCriteria)userCommand.getResult());
model.addCollection(users);
model.setWrapper(new UserWrapper());
} catch (ValidationException e) {
e.printStackTrace();
} catch (WebCommandException e) {
e.printStackTrace();
}
return model;
}
}
我打算注释为@Controller。指定@RequestMapping或在xml配置中删除基类BasicAction(旧版mvc)。我最近在这个项目中引入了 spring 并重构为使用依赖注入(inject)和请求范围命令对象(请求包装器)
最佳答案
最简单的方法是在 Model
类上实现 View
接口(interface)。然后,您的旧 Controller 可以直接返回此类(就像现在一样),并且它将由 DispatcherServlet 通过调用其 render
方法来呈现。
另一种可能性是实现您自己的 HandlerMethodReturnValueHandler
,其中处理程序可以实际渲染响应并将响应标记为已处理 (mavContainer.setRequestHandled(true);
),因此DispatcherServlet
不会尝试渲染任何 View 。
关于java - Spring MVC 自定义 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16904203/