我正在将我的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文件加载相关的任何内容?请帮忙!
答案 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])
}