【问题标题】:Creating a child domain object from gsp page从 gsp 页面创建子域对象
【发布时间】:2013-09-19 16:54:53
【问题描述】:

是否可以使用 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' )}"
});

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

【问题讨论】:

  • 问题不在于您所说的 remoteFunction。事实上,您的 create 方法显然希望通过 params.id 上的任何内容来查找对象。很有可能(如果您调试代码)您会看到它以“未定义”的形式出现,因为您的 remoteFunction 没有传入 id 参数。
  • @Gregg 不是这样。我在 create 方法中放了一个 println params.parent.id,它就在那里。
  • 你能编辑你的问题并从你的控制器显示创建方法吗?

标签: ajax grails


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    所以我目前的工作是这样的:

    <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 中?每当我运行该函数时,前一个子元素都会被删除并替换为新的,我只想将新的子元素附加到列表的末尾。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-14
      相关资源
      最近更新 更多