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

java – 使用GWT将数据对象从客户端传输到服务器以保持数据的方

发布时间:2020-12-15 02:27:29 所属栏目:Java 来源:网络整理
导读:如果您使用JPA或其他类型的持久性,您可能有办法保存通过ajax发送到客户端的记录. 编辑:接口是用GWT完成的,所以所有ajax调用都是经典的java方法(转换为javascript等价) 让我们把类Person作为数据库中的实体. 人有四个字段:姓名,生日,身份证,电子邮件 当您通
如果您使用JPA或其他类型的持久性,您可能有办法保存通过ajax发送到客户端的记录.

编辑:接口是用GWT完成的,所以所有ajax调用都是经典的java方法(转换为javascript等价)

让我们把类Person作为数据库中的实体.
人有四个字段:姓名,生日,身份证,电子邮件

当您通过ajax从服务器加载某人时,通常会向客户端发送一个Person对象.

在人物编辑器中,您可以显示姓名,生日和电子邮件.编辑Person对象时,您可能希望显示id.

有两种情况:

>保存人员:只能更改电子邮件,但您可以显示ID
>创建人:可以更改电子邮件,姓名和生日

将刚刚编辑的数据发送到服务器时,您的进展方式是什么?

我看到几种方法:

>发送一个Person对象.在这种情况下,您必须处理您持久存储的数据,而不仅仅是让您从客户端收到的人物对象持久化模式,因为黑客可以发送您可能不想更改的数据(并且您不能信任接口以禁用这些数据)变化).在这种情况下,也有几种方法:

>使用两个函数(保存并创建),在服务器上创建一个新的Person对象(如果你在save方法中,则通过id加载持久化实例)并将你想要的所有字段从客户端Person对象复制到持久化的对象
>使用一个函数(saveOrCreate)并检查id是否存在.它相当于上面的方法,将两个函数合并为一个大的“if”

>将数据发送到服务器(电子邮件,姓名,ID(编辑时)).执行此操作时,创建一个新的Person对象(或加载持久的对象)并将数据复制到此持久化实例.

总结一下,您有以下方法签名之一(仅适用于编辑案例):

>人员savePerson(人);
> Person savePerson(String id,String email);

我看到每种方法的利弊.例如,第一个允许快速更改P??erson模型而不修改所有savePerson调用.但它比第二种方法更难以理解什么是真正节省的.

我不知道什么是最好的,如果你知道另一种方法.那么,你好吗?

解决方法

使用域对象进行数据传输总是很好.在GWT中,您必须定义接口并标记Rpc BeanProxies.作为项目演变的一部分,您需要向对象添加其他字段.如果使用的是使用数据属性而不是对象的接口,则会不断更改它们,并且方法签名变得笨拙且不可读.

但是,某些人要求将持久域实体与业务域分开.在这种情况下,可以使用属性复制(apache commons-bean utils).

(编辑:李大同)

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

    推荐文章
      热点阅读