java - Spring MVC 自定义 View

标签 java spring model-view-controller

我正在重构遗留应用程序以使用 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/

相关文章:

java - Tomcat 在自定义 CORS 过滤器上抛出奇怪的错误

java - Spring boot从类路径加载H2 db文件

c# - 我到底在用什么?

java - MVC - 我如何理解它? ( java )

php - PHP MVC 应用程序中用于限制登录(或其他)请求的公认通用模式

java - 允许从 OnClickListener 非最终变量修改对象

Java 到 VB.Net 的转换 [小片段]

java - Rest API 中的 JWT token 传递

java - 根据其他类的数据自动设置单选按钮

java - 如何在spring中显示具有帐户状态的用户列表