Grails 2.5:GSP文件未找到资源(404)

时间:2016-09-27 12:21:52

标签: grails grails-2.0 gsp

我正在将我的Grails应用程序从版本1.x升级到2.5并在版本2.5中遇到此问题,该版本在版本1.x中运行良好

在GSP文件(connect.gsp)中我试图打开另一个gsp rename.gsp。此rename.gsp文件与connect.gsp位于同一位置。但是,找不到该文件,并且弹出窗口中显示404-Resource not found错误。

connect.gsp(javascript代码)

showPopWin("${request.getContextPath()}/user/rename.gsp", 280, 160, returnFunction);

gsp文件的位置:

grails-app
     - views
          -user
              -connect.gsp
              -rename.gsp

Grails 2.x版本中是否更改了与GSP文件加载相关的任何内容?请帮忙!

3 个答案:

答案 0 :(得分:0)

我认为grails正在寻找网址映射。

您应该在控制器中创建一个动作,此动作必须呈现gsp文件。

简单示例:

CustomcontrolController {

    def renamedisplay()
    {
        render(view: '/user/rename')
    }
}

然后默认情况下grails将映射以下url:

showPopWin("${request.getContextPath()}/customcontrol/renamedisplay", 280, 160, returnFunction);

或者您可以通过编辑UrlMappings.groovy指定不是由Grails生成的特定网址

答案 1 :(得分:0)

Grails提供重定向的未来,以便从另一个动作调用一个动作。 但是这里当连接动作是get call然后重定向到重命名动作

   def userController () {
           def connect () {

              redirect(action: "rename")
              //  or redirect(controller: "user", action: "rename") 
           } 
          def rename() {

          } 
 }

如果要从rename.gsp致电connect.gsp,您可以使用window.location.href

window.location.href="${request.getContextPath()}/user/rename" 
or

window.location.href="${request.getContextPath()}/user/rename.gsp"

答案 2 :(得分:0)

看起来Grails 2.x中的资源渲染已更改

我在下面添加了解决方法:

在我必须从另一个gsp调用gsp页面(而不是控制器操作)的地方,然后首先将它提交给控制器操作,然后使用render来转到相应的gsp文件。

就是在connect.gsp

showPopWin("${request.getContextPath()}/user/renameUI", 280, 160, returnFunction);

在UserController中添加一个动作renameUI,

def renameUI= {
    render( view : 'rename', model:[params:params])
}