【问题标题】:How to use the package name to differentiate between classes in grails?如何使用包名来区分 grails 中的类?
【发布时间】:2010-03-04 09:32:31
【问题描述】:

你可以使用包名来区分 grails 中的类吗?

例如com.business.appName.DomainClass 和 com.business.appName.foo.DomainClass?

我认为这会导致问题,因为 grails 需要唯一的类名。如果您尝试这样做,当您尝试为 com.business.appName.foo.DomainClass 生成视图时,它会尝试覆盖 com.business.appName.DomainClass 的视图 gsps

有没有办法在不同的包中拥有相同的域类名?

【问题讨论】:

标签: grails


【解决方案1】:

问题是控制器名称必须是唯一的。为不同包中具有相同名称的两个域类运行“generate-controller”或“generate-all”会在其自己的包中创建两个不同的控制器,但它们都将映射到 /yourapp/domainClass URL,并且都将共享grails-app/views/domainClass GSP 文件夹。

无论如何,您都需要重命名其中一个控制器,因为即使在不同的包中也不能有两个具有相同名称的控制器,并且即使在 URLMappings 中也无法解决此问题,因此如果您愿意,它看起来是您的最佳选择使用生成的代码是生成第一组并将控制器和视图移开,然后生成第二组。然后重命名一个或两个控制器,使它们具有唯一的 URL,并重命名相应的 GSP 文件夹。

【讨论】:

    【解决方案2】:

    如果您的 gsp 有问题,请尝试在顶部声明

    <%@ page import="com.thePackageIWant.TheClassIWant" %>
    

    编辑: 有没有试过在生成视图的时候指定包?

    grails generate-views com.business.appName.foo.DomainClass

    对不起,我是 Grails 的新手,所以我可能无法为您提供更多帮助:(

    【讨论】:

    • 你误解了这个问题。有两个同名的域类,但在不同的包中。当您生成视图时,第二个域类的视图的生成将覆盖第一个域类的视图。
    猜你喜欢
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2013-10-25
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 2021-12-13
    相关资源
    最近更新 更多