从gsp页面创建子域对象

时间:2013-09-19 16:54:53

标签: ajax grails

是否可以使用Grails remoteFunction在子域对象上调用create方法?

我正试图从我的gsp页面上的remoteFunction调用中调用子控制器中的create函数,但是一直出错

Message: Provided id of the wrong type for class XXX.YYY. Expected: class java.lang.Long, got class java.lang.String

remoteFunction代码如下所示:

$.ajax({
    type: 'POST',
    url: "${remoteFunction(controller:'childController' action:'create' )}"
});

我整个上午都在搜索Google,我唯一能找到的就是用于级联select语句的remoteFunctions。

2 个答案:

答案 0 :(得分:0)

请记住,create方法为您提供了create gsp视图。该视图上还有一个保存按钮,该按钮发布到保存控制器方法。我认为你需要编写一个自定义方法来实例化你的新类并一次性保存它。

答案 1 :(得分:0)

所以到目前为止我的工作是:

<script type="text/javascript">
function someFunction(){
    var id = ${parentInstance.id};
    var $element = $('#elements ul li.selectedAdd');
    $element.removeClass('selectedAdd');
    $('#right-side ul').append($element);
    ${remoteFunction(
        action:'createChild',
        update:'right-side',
        params:'\'id=\'+ escape(id) +\'&childType=\' + escape(childType)'
    )}
};

适用于此控制器方法:

def createChildBlock = {
    def parent = Parent.get(params.id)
    def childBlockInstance = new ChildBlock(childType:params.childType,parent:parent)
    childBlockInstance = myService.saveChildBlock(parent,params)

    render (template:"childBlock", model:[childBlockInstance:childBlockInstance])
}

它有效。两个域对象都持久保存到数据库,并更新视图。但是,如何将以前的对象保留在获得更新的right-side div中?每当我运行该函数时,前一个子项被删除并替换为新的子项,我只想将新的子项附加到列表的末尾。