首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

有没有可能有两个控制器具有相同的名称,并且在不同的包中,grails 2.1.3

在Grails 2.1.3中,不建议在不同的包中使用相同的控制器名称。这是因为Grails框架使用控制器名称来映射URL请求,并且在不同的包中使用相同的控制器名称可能会导致冲突和不可预测的行为。

然而,如果非要在不同的包中使用相同的控制器名称,可以通过使用命名空间(namespace)来区分它们。命名空间是一种将控制器分组的机制,可以在URL中指定命名空间来访问特定的控制器。

以下是一个示例:

  1. 在grails-app/controllers目录下创建两个包:com.example.package1和com.example.package2。
  2. 在com.example.package1包中创建一个名为MyController的控制器,实现所需的功能。
  3. 在com.example.package2包中创建另一个名为MyController的控制器,实现不同的功能。
  4. 在grails-app/conf/UrlMappings.groovy文件中配置命名空间:
代码语言:txt
复制
class UrlMappings {

    static mappings = {
        "/$namespace/$controller/$action?/$id?"{
            constraints {
                // 定义命名空间的约束条件
                namespace(matches: /package1|package2/)
            }
        }

        // 其他映射规则...
    }
}

现在,可以通过在URL中指定命名空间来访问不同的控制器:

  • 访问com.example.package1包中的MyController:/package1/my/action
  • 访问com.example.package2包中的MyController:/package2/my/action

这样,即使控制器具有相同的名称,也可以在不同的包中使用它们,并通过命名空间来区分它们。

请注意,这只是一种解决方案,不建议在实际开发中使用相同的控制器名称。最好遵循良好的命名约定,以避免潜在的冲突和混淆。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

《Spring Boot极简教程》第8章 Spring Boot集成Groovy,Grails开发第8章 Spring Boot集成Groovy,Grails开发小结参考资料

Grails这个独特框架被视为是提升工程师生产效率动态工具,因为其干脆API设计,合理默认值以及约定架构。与java无缝集成使得这个框架成为世界上众多框架首选。...[3] Grails实现原理 基于Spring MVC控制器层 构建于Gant 上命令行脚本运行环境,内置Tomcat服务器,不用重新启动服务器就可以进行重新加载 基于SpringMessageSource...2.创建一个 GRAILS_HOME 环境变量。 3.将 $GRAILS_HOME/bin 添加到 PATH。 如果你电脑上有SDKMAN!...首次构建,gradle需要下载工程依赖jar。...对控制器理解可以归结为三个 R:return、redirect 和 render。有些动作利用隐式 return 语句将数据返回到具有相同名称 GSP 页面。有些动作进行重定向。

2.5K30

8.2 Spring Boot集成Groovy、Grails开发小结参考资料

Grails这个独特框架被视为是提升工程师生产效率动态工具,因为其干脆API设计,合理默认值以及约定架构。与java无缝集成使得这个框架成为世界上众多框架首选。...[3] Grails实现原理 基于Spring MVC控制器层 构建于Gant 上命令行脚本运行环境,内置Tomcat服务器,不用重新启动服务器就可以进行重新加载 基于SpringMessageSource...2.创建一个 GRAILS_HOME 环境变量。 3.将 $GRAILS_HOME/bin 添加到 PATH。 如果你电脑上有SDKMAN!...首次构建,gradle需要下载工程依赖jar。...对控制器理解可以归结为三个 R:return、redirect 和 render。有些动作利用隐式 return 语句将数据返回到具有相同名称 GSP 页面。有些动作进行重定向。

2.3K30
  • Groovy on Grails 交流活动

    “脚手架” 即是可以自动生成控制器和视图之增删改代码样板控制器。对控制器和视图显式重建通常毫无必要,除非你不愿应用动态脚手架功能。...接下去,当然,如果你愿意的话,你可以生成个性化控制器和视图代码。 “Grails 和其它框架一样,最终总有局限性。”...它带来了强有力语言特性,比如闭,动态载入,还有 Java 平台元类型对象。在这一切过程,你 Java 技能却永不过时,因为 Groovy 正是建立在对 Java 平台体验与熟知基础上。...那么好契合性却又同时具有如此多现代语言之特性。...如果你也有相同志趣,看看我幻灯片吧,它大意如下: 当我们发布了 Grails1.0 版本,Codehaus 访问带宽总量难以置信地上涨了 40GB。

    1.7K20

    简洁、高效、灵活:探索 Spring 同级别的编程框架

    基于 Spring Boot 构建控制器层。 具有数百个插件插件系统。 可以使用灵活配置创建 AngularJS、React等程序 。 基于 Gradle 交互式命令行构建系统和环境。...Grails不仅仅是一个Web框架,它由各种子项目组成。下表总结了生态系统其他一些关键项目。...它由Yammer开发,增强了基于JVM后端服务,集合了来自Java生态系统稳定和成熟程序库,组成了简单、轻量级程序,使得用户可以专注于把事情做好。...易于部署:Dropwizard框架采用可执行Jar形式进行打包和部署,可以轻松地在任何环境运行,例如本地开发机器、云平台或Docker容器等。...这些框架在不同场景和需求下具有各自优势和特点,感兴趣可以自行学习一下。

    73950

    java程序员为什么使用Groovy?

    近来闲来无事,于是开始认真的看看Groory究竟有什么好。其实最初我接触它是因为Grails这一个框架,这两个都是为了实现一个目的,java敏捷开发,与java无缝对接。...Groovy 网站( http://groovy.codehaus.org ) 给出了 groovy 最好定义: groovy 是在 java平台上具有象 Python , Ruby 和 Smalltalk...//用闭定义一个方法 var1为参数 ,->后面是执行语句(当然参数不是必须) def methodA={var1-> print "this is methodA"} //用闭定义一个方法...{ println it }" 即使 java 有一个名称为 eachFileRecurse 方法和一个 FileListener 接口,你仍旧需要显示创建一个类, 声明一个 main 方法,...保存源代码到一个文件, 并且编译它, 然后你才能运行它, 基于比较, 我们来看看 java 做相同工作代码, 我们假设存在单独 eachFileRecurse 方法: public class ListFiles

    1.9K40

    《Groovy极简教程》第1章 Groovy简介《Groovy极简教程》第1章 Groovy简介参考资料

    使用该种语言不必编写过多代码,同时又具有和动态语言中其他特性。 为什么要学习Groovy 为什么要学习Groovy,简单来说就是Groovy可以用较少代码实现较多功能。...,在闭内创建变量在闭包被调用范围内同样可以被引用, 闭可以保存在变量并被作为参数传递到方法。...去掉扩展名,没有名,在default)作为类名字。...如果在groovy文件正好有一个类定义,并且该类名字与文件名称相同,那么这就和java类与文件一一对应关系相同。...在一个groovy文件可以包含多个不同可见性类定义,并且没有强制性要求其中有一个类类名与文件名相同。groovyc编译器会很乐于把该文件定义所有的类都编译成*.class文件。

    1.3K20

    图文了解 Kubernetes

    取而代之是,他们使用linux系统存在构造(例如cgroups,名称空间)在其上构建了一个不错抽象。 现在我们知道什么是容器了,很容易理解为什么它们很受欢迎。...我选择是Kubernetes(因此是本文),因为Kubernetes是…… ? 就像乐高积木一样。它不仅具有大规模运行容器协调器所需组件,而且还具有使用自定义组件灵活地交换不同组件灵活性。...快乐Pod 一个 Pod 可以有多个容器,并且在这些容器运行所有服务都可以将彼此视为本地主机。这使得将应用程序不同方面分离为单独容器,并将它们全部作为一个容器加载在一起非常方便。...表示为无人机服务,将数据传递到相应Pod Service 是一个控制器对象,其主要职责是在将“数据”分发到相应节点时充当负载平衡器。...基本上,它是一种控制器构造,用于在工作节点之间对相似的容器(通常由容器标签标识)进行分组。 假设您“前端”应用程序想与“后端”应用程序通信,则每个应用程序可能有许多正在运行实例。

    59630

    Groovy新手教程

    中最常见应用是对集合进行迭代,以下定义了3个闭对map进行了迭代: map.each({key,value-> //key,value两个參数用于接受每一个元素键/值 println...看起来,闭相似于方法,须要定义參数和要运行语句,它也能够通过名称被调用。然而闭对象(不要奇怪,闭也是对象)能够作为參数传递(比方前面的闭作为參数传递给了mapeach方法)。...而在java,要做到这一点并不easy(或许C++函数指针能够,但不要忘记java没有指针)。其次,闭也能够不命名(当然作为代价,仅仅能在定义闭时运行一次),而方法不能够。...操作符达到相同目的: rs?.next() ?在这里是一个条件运算符,假设?前面的对象非null,运行后面的方法,否则什么也不做。 14、 可变參数 等同于java 5变长參数。...这也充分说明了,groovy和java,除了语法不一样,本质上没有什么差别(对照.net frameworkC#和VB.net,它们除了语法不同外,本质上它们都使用CLR)。

    2K10

    我是如何成为一个JavaWeb开发者

    这是用来显示页面样式。它控制字体、颜色和布局。与HTML定义是网页内容不同,CSS定义是当在浏览器呈现时网页外观。...例如,你可以对桌面Web应用程序使用一套CSS规则,对移动应用程序使用另一套不同CSS规则。相同HTML,当渲染在浏览器上时,就有了两个完全不同外观。   ...Java   Java——制作网页上东西。不要将Java与Java混淆。虽然它们有一些语法相似性,但这是两个完全不同编程语言。Java才能真正推动Web2.0应用程序。...Grails优势之一就是其出色社区支持。   SpringRoo   SpringRoo是一个纯Java框架,这似乎和Grails作用相同,不过它没有Groovy。...JBossSea   JBossSeam可能是最接近Spring框架替代品。JBossSeam遵循JEE标准。JBossSeam是一个很好选择,具有良好支持而被企业所接受。

    95710

    在您浏览器构建和共享开发者环境

    在Codenvy构建Dockerfile与在本地构建Dockerfile没有什么区别 - 相同指令,相同规则,相同输出。有几个Codenvy特定功能,如注入项目源到图像。...这里有一个基于预安装JDK7镜像搭建Grails环境例子: FROM codenvy/jdk7 #下载Grails发行版,将其解压到/home/user/$GRAILS_HOME RUN wget...您可以为相同应用程序创建多个配置,例如一个用于构建和运行,另一个用于PaaS部署。是的,自定义运行时可以充当应用程序部署环境。...然后系统获取创建临时工作区请求,并将该项目克隆到工作空间中。正如之前提到,项目克隆了所有的元数据和自定义环境。最后,您将获得具有相同设置和环境源项目副本。...要在本地运行此项目,您需要安装相当多东西 - Leiningen,MongoDB,Less以及Foreman。请注意,Less是通过npm安装,而Foreman是一个Ruby gem

    1.8K70

    Java EE实用教程笔记----(2)第二章 Struts 2基础

    可见,其区别是:用Struts 2框架代替Servlet部分作为控制器,业务处理则由用户自定义Action去实现,与Struts2控制核心相分离,降低了系统各部分组件耦合度,和编程难度. 2.1.3...2.5.3 配置详解 1.可配置属性 (1)name属性:该属性必须指定,代表名称,由于struts.xml可以定义不同,而且它们之间还可以互相引用,所以必须指定名称...当Struts 2接收到请求后,会将请求信息解析为namespace名和action名两部分,然后根据namespace名在struts.xml查找指定命名空间并且在寻找与action名相同配置...,如果没有找到,就到默认命名空间中寻找与action名称相同配置,如果再没找到,就给出错误信息。...:配置默认action,如果配置了默认action,则若请求action名在找不到与之匹配名称就会应用默认action。

    89430

    .Net MVC 框架基础知识「建议收藏」

    如果在相应视图目录没有找到视图文件,那么会寻找Views\Shared目录下名称相同视图文件 在ASPX视图引擎,可以使用asp服务器控件,但它作用仅仅局限与生成html代码,而不推荐开发人员使用...接口类; 在Actionreturn view(),默认会返回和Action名称一样视图文件....ActionResult有很多实现类,不同实现类用于响应客户端不同结果。并且在Controller类中提供了大量辅助方法,这些辅助方法可以快速创建各种ActionResult....诸如新增\修改等功能模块,我们往往会创建2个名称相同Action:一个action用于加载新增\修改页面;另一个action用于处理新增\修改页面提交表单数据.那么如何区分在何时调用哪个action...映射前提条件:Html标记name属性值和action参数名称要一致.

    2.2K50

    14个Spring MVC超实用技巧!

    这是最可取,因为它很简单:无需在配置文件控制器声明bean。 注意:通过使用@Controller 注解,您可以拥有一个多动作控制器类,该类能够处理多个不同请求。...例如: 此外,此注解还具有在某些情况下可能有其他属性,例如method。...这是一个例子: 此控制器两个处理相同URL模式方法/login,但前者用于 GET 方法,而后者用于 POST 方法。...这是将控制器HttpServletRequest 与Servlet API 接口分离好方法。 Spring将方法参数用户名和密码绑定到具有相同名称HTTP请求参数。...如果参数名称与变量名称不同,则可以如下指定参数实际名称: 该@RequestParam 注解也有两个额外属性,这可能是在某些情况下是有用。该属性指定参数是否为必需。

    1.1K10

    Python 机器人学习手册:6~10

    编码器使用不同类型传感器(例如光学传感器和霍尔传感器)来检测这些参数。 该编码器使用霍尔效应来感应旋转。 正交编码器具有两个通道,即通道 A 和通道 B。...一些制造商使用名称 CPR 而不是 PPR,因为每个脉冲将包含两个边沿(上升和下降),并且存在两个具有 90 度相移脉冲通道(A 和 B)。 边总数将是 PPR 数四倍。...在 PyQt 代码添加插槽定义 这里给出了从 PyQt 生成 Python 代码。 pyuic4和pyside-uic生成代码是相同,只是导入模块名称不同。 其他所有部分都相同。...它是一种智能致动器,具有一个电机和一个微控制器,可以直接连接到 PC 并用于自定义致动器不同设置。 可以菊花链方式连接,适用于机械臂。 它是用于查找范围传感器,具有一个发射器和一个接收器。...两种绑定几乎相同,只是名称不同。 PyQt 许可证是 GPL,而 PySide 随 LGPL 一起提供。 另外,PySide 拥有许多有关其 API 文档。

    3.4K20

    我是如何成为一个JavaWeb开发者

    这是用来显示页面样式。它控制字体、颜色和布局。与HTML定义是网页内容不同,CSS定义是当在浏览器呈现时网页外观。...例如,你可以对桌面Web应用程序使用一套CSS规则,对移动应用程序使用另一套不同CSS规则。相同HTML,当渲染在浏览器上时,就有了两个完全不同外观。   ...Java   Java——制作网页上东西。不要将Java与Java混淆。虽然它们有一些语法相似性,但这是两个完全不同编程语言。Java才能真正推动Web2.0应用程序。...Grails优势之一就是其出色社区支持。   SpringRoo   SpringRoo是一个纯Java框架,这似乎和Grails作用相同,不过它没有Groovy。...JBossSea   JBossSeam可能是最接近Spring框架替代品。JBossSeam遵循JEE标准。JBossSeam是一个很好选择,具有良好支持而被企业所接受。

    88010

    Windows 身份验证凭据管理

    在域名系统 (DNS) 中发布服务资源记录,并使用 DNS 将名称解析为域控制器 Internet 协议 (IP) 地址。...应用程序和用户模式 Windows 用户模式由两个能够将 I/O 请求传递给适当内核模式软件驱动程序系统组成:环境系统,运行为许多不同类型操作系统编写应用程序,以及集成系统,运行特定于系统代表环境系统运行...LSASS 进程内存 本地安全机构子系统服务 (LSASS) 代表具有活动 Windows 会话用户将凭据存储在内存。...NT 密码哈希是帐户密码未加盐 MD4 哈希。这意味着如果两个帐户使用相同密码,它们也将具有相同 NT 密码哈希。...此散列函数旨在始终从相同密码输入中产生相同结果,并最大限度地减少两个不同密码可能产生相同结果冲突。这个散列总是相同长度,不能直接解密以显示明文密码。

    5.9K10

    【npm】详解npm模块安装机制

    ,若发现第一层级有相同名称,但版本不同模块,便只能嵌套在自身父模块下方 这一开始可能有些难理解,所以让我们看图说话吧!...这就是本文一开始依赖树逻辑结构和物理结构不同起因。...也就是说: 在npm2,依赖树逻辑结构和它物理结构相同 在npm3,依赖树逻辑结构和它物理结构可能不同 再说2:在安装某个二级模块时,若发现第一层级有相同名称相同版本模块,便直接复用那个模块...在1基础上,我们把1例子还原回之前复杂一些场景::项目APP下有两个依赖模块A和B;A又有一个依赖模块Cv1.0;而B也有一个依赖模块C v1.0(两个C模块版本相同) 对npm2,两个C相同...对此,请看3: 最后说3:在安装某个二级模块时,若发现第一层级有相同名称,但版本不同模块,便只能嵌套在自身父模块下方 在2,A,B所依赖两个C模块是相同,但如果两个C模块版本不同呢?

    1.7K100

    详解Kubernetes网络模型

    kubelet(一个控制器)然后会注意到新变化并设置所需网络功能以使 Pod 在集群内可访问。在这里,两个独立控制器两个独立状态变化做出反应,以使集群现实与用户意图相匹配。...Pod 容器都具有相同 IP 地址和端口空间,这些 IP 地址和端口空间是通过分配给 Pod 网络命名空间分配,并且可以通过 localhost 找到彼此,因为它们位于同一个命名空间中。...具有相同 IP 地址未来流量使用查找表来发现将数据包转发到正确 MAC 地址。 图5....图 7 以与图 6 相同请求开始,但这次,目标 Pod(以绿色突出显示)与源 Pod(以蓝色突出显示)位于不同节点上。...Ingress 方法将根据 Kubernetes 云提供商控制器实现方式而有所不同

    1.6K20
    领券