我的一个控制器的一项操作需要同时生成(重定向/渲染)两个单独的视图并将两个页面显示给客户端。这就像当用户提交他的信息时,页面将重定向到一个带有列表的新页面。同时另一个页面需要在包含一些附加信息的新窗口中弹出(用户将打印此页面)。我知道,我可以用单个页面解决问题,但我想知道是否有任何方法可以从单个控制器操作同时生成两个单独的页面/窗口。
感谢期待
我的一个控制器的一项操作需要同时生成(重定向/渲染)两个单独的视图并将两个页面显示给客户端。这就像当用户提交他的信息时,页面将重定向到一个带有列表的新页面。同时另一个页面需要在包含一些附加信息的新窗口中弹出(用户将打印此页面)。我知道,我可以用单个页面解决问题,但我想知道是否有任何方法可以从单个控制器操作同时生成两个单独的页面/窗口。
感谢期待
简单回答是不。Grails 没有做任何神奇的事情。它仍然受限于正常的 HTTP 请求/响应生命周期。一个请求得到一个响应。您所要求的听起来像是您希望 grails 能够为单个 HTTP 请求生成 2 个响应,这是不可能的。响应要么是浏览器要呈现的页面,要么是浏览器转到另一个 URL 的重定向消息。
您可以编写可以处理正常和 ajax 请求的操作。请参阅此处的文档: 响应 Ajax 和非 Ajax 请求
然后你可以生成你的“正常”视图。之后,您通过在客户端使用 ajax 调用相同的操作并为您的弹出页面加载数据。
为什么不在<script>window.open()</script>
主视图中使用 a 来打开弹出窗口?