Grails:重用操作

Grails:重用操作,grails,Grails,我正在构建一个应用程序,它允许用户上传文档。我有基本的创建/查看操作,但我想在其他地方重用这个操作 我想知道是否有人知道如何做到这一点。这似乎不是一个很好的方法 以下是我考虑过的几种方法: 试着做一个chain()。这不起作用,因为链接是一个GET,上传你需要一个帖子 将主要业务逻辑分解到Grails“服务”中,并执行两个使用相同代码的操作 使用JS模式窗口。我一直在考虑一种模式,它包含一个iframe到文档上传的“未清理”版本。这里的技巧是在上传完成后关闭窗口 谢谢 --Matthias您可以

我正在构建一个应用程序,它允许用户上传文档。我有基本的创建/查看操作,但我想在其他地方重用这个操作

我想知道是否有人知道如何做到这一点。这似乎不是一个很好的方法

以下是我考虑过的几种方法:

  • 试着做一个chain()。这不起作用,因为链接是一个GET,上传你需要一个帖子
  • 将主要业务逻辑分解到Grails“服务”中,并执行两个使用相同代码的操作
  • 使用JS模式窗口。我一直在考虑一种模式,它包含一个iframe到文档上传的“未清理”版本。这里的技巧是在上传完成后关闭窗口
  • 谢谢


    --Matthias

    您可以使用基本控制器类,并将公共功能放在那里。然后扩展基本控制器并从其他操作方法调用该方法。

    您可以使用基本控制器类,并将公共功能放在那里。然后扩展基本控制器并从其他操作方法调用该方法。

    我不喜欢扩展控制器方法。事实上,我尽可能避免继承。我宁愿将公共代码放在服务类中,并以这种方式重用它。

    我不喜欢扩展控制器方法。事实上,我尽可能避免继承。我宁愿将公共代码放在服务类中,并以这种方式重用它。

    我的回答不是说这是一种糟糕的方式。只是为了给你另一个选择是的。。。这个解决方案也是有效的。诀窍是如何继续这样做。如果有很多这样的“共享”操作,那么基类就会变得笨拙。谢谢。我的回答并不是说这是一种糟糕的方式。只是为了给你另一个选择是的。。。这个解决方案也是有效的。诀窍是如何继续这样做。如果有很多这样的“共享”操作,那么基类就会变得笨拙。谢谢你,我一直在尝试。。。但为了使文件脱离请求流,我需要使API类似于“def Document saveDocument(request,params)”。有趣的是,因为我尝试重用这个逻辑的地方是在一个webform中,看起来“请求”对象是不同的。在常规CRUD控制器中,它是一个org.springframework.web.multipart.support.defaultmultipartttpServletRequest(它有一个“getFile()”方法),而在webflow中,我得到一个org.apache.catalina.core.ApplicationHttpRequest对象。。。我想我会想办法弄清楚的。。。我解决了这个“错误的HTTPServletRequest”问题。我把两个标签嵌套在一起。因此,文件没有使用enctype=“multipart/form data”参数上载。我一直在尝试。。。但为了使文件脱离请求流,我需要使API类似于“def Document saveDocument(request,params)”。有趣的是,因为我尝试重用这个逻辑的地方是在一个webform中,看起来“请求”对象是不同的。在常规CRUD控制器中,它是一个org.springframework.web.multipart.support.defaultmultipartttpServletRequest(它有一个“getFile()”方法),而在webflow中,我得到一个org.apache.catalina.core.ApplicationHttpRequest对象。。。我想我会想办法弄清楚的。。。我解决了这个“错误的HTTPServletRequest”问题。我把两个标签嵌套在一起。因此,文件没有使用enctype=“multipart/form data”参数上载