grails表单提交数据保存时,封装多个对象,以单一对象形式提交

<p>
</p>

     由于刚接触grails,并不是特别熟,前天做开发时碰到一个问题,我需要用表单提交到后台添加,如果单一对象还可以直接提交,但是如果是多个对象,one2one,one2many,怎么提交?而且数据的字段很多的时候不肯能在后台NEW一个对象,再set,所以封装成一个完整对象提交到后台,直接保存该对象,这样代码看起来也比较清爽,这个在S2SH里是很简单的能实现的,最开始用S2SH提交,能完整提交,但是保存有问题,后来百度,奈何grails用的人并不多,所以没找到理想的答案,后来问同事,也没解决,说这能把对象分开提交,后来集合同事说的和百度上介绍的还真搞出来了。在此写下笔记,由于第一次写博客,可能写得不是很好。

     下面把关键地方写一下,

     比如有个用户注册的表单,注册的表有两个,一个用户类型表,一个用户表,其中用户表中外键引用用户类型表的主键

    表单原代码如下

 <g:form url="[controller:'user',action:'add]" method="post" id="myForm">
   用户类别:<select name='User.userType.id'>
                   <option value='1'>学生</option>
                   <option value='2'>老师</option>
                 </select>
   用户名:<input type='text'  name='User.name'/>
   密码:<input type='password' name='User.pwd'/>
</g:form>
     name属性就是你需要保存的那个对象,后跟属性,由于grails提交表单的时候会把controller和action都提交到后台,所以在直接保存的该对象的时候会出现问题,需要对传过来的对象进行一次处理,把接到的对象由controller传递到service层,service层拿到该对象后先new一个User类,代码如下:

User user = new User();

user.properties = params.User;

这样处理之后就可以直接保存了,直接用新new的User调save(),

user.save(flush: true);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值