加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Spring中的独立模型和UI视图模型(Spring中的MVVM)

发布时间:2020-12-15 02:22:56 所属栏目:Java 来源:网络整理
导读:我想在 Spring 3中开始讨论分离纯模型和UI模型. 纯模型我指的是从数据库中检索的主要对象/对象,假设有一些“用户帐户”.它包含足够的信息以在HTML视图中显示它或将其传递给Web服务. 通过UI模型,我的意思是我在UI中需要的所有辅助工具来处理该对象.例如.如果
我想在 Spring 3中开始讨论分离纯模型和UI模型.

纯模型我指的是从数据库中检索的主要对象/对象,假设有一些“用户帐户”.它包含足够的信息以在HTML视图中显示它或将其传递给Web服务.

通过UI模型,我的意思是我在UI中需要的所有辅助工具来处理该对象.例如.如果“用户帐户”具有“状态”,那么我需要从数据库中获取所有“状态”,例如组合框.这些观点很棘手,在某些情况下,它们需要更多信息,而在其他情况下则更少.能够通过添加诸如“全部选择”之类的项目来改变一些列表也是很好的,这是纯粹的UI内容(并且从视图模板不太方便).

我听说有所谓的Model-View-ViewModel模式,似乎解决了这些问题,但我从未尝试过它的实现.

我现在使用的解决方案是将逻辑分解为两个服务 – 一个用于纯模型,一个用于UI模型.它看起来像这样:

@RequestMapping(value="app/user_accounts/{id}")
public String getUserAccount(@PathVariable("id") String id) {
    service.getUserAccount(id); // Gets main object and puts it into model
    presenter.formUserAccount(); // Gets all classifier for main object's properties
    return "user_account";
}

我不喜欢的是视图及其所谓的视图模型彼此不相关.我可以调用presenter.formUserAccount()并返回完全不相关的视图名称.

我看到的另一种方法类似于Spring控制器注释.我们有注释为@ViewModels的类和映射到视图名称的方法.拦截器在呈现某个视图之前查找并执行这些方法.这些看起来很优雅,但需要很多代码编写.

你会如何解决这个问题?

解决方法

我一直在考虑基于Spring MVC的Grails环境中考虑这个问题.我的方法是使用命令对象作为视图模型,因为它为您提供了在视图模型中所需的数据绑定和验证功能.使用命令对象,您可以使用命令对象将视图属性映射到域对象,从而将“纯模型”(或域模型)抽象出视图.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读