Javascript 在grails中保存页面的视图状态

Javascript 在grails中保存页面的视图状态,javascript,html,grails,Javascript,Html,Grails,我有一个页面,它是从一堆呈现的grails模板生成的,带有javascript小部件和其他东西,为我们正在开发的搜索引擎指定参数。问题是,如果有人单击搜索结果中返回的某个人并将其带到另一个页面,然后点击浏览器后退按钮,则搜索参数、动态创建的小部件和以前的搜索结果都将消失 我真的不希望必须根据搜索参数(我可以将其保存为会话变量)以编程方式重新构建页面,然后我必须再次重新运行搜索查询以获取结果。有没有一种方法可以像创建页面一样保存页面 谢谢弹出一个包含此人信息的javascript窗口,而不是将他们

我有一个页面,它是从一堆呈现的grails模板生成的,带有javascript小部件和其他东西,为我们正在开发的搜索引擎指定参数。问题是,如果有人单击搜索结果中返回的某个人并将其带到另一个页面,然后点击浏览器后退按钮,则搜索参数、动态创建的小部件和以前的搜索结果都将消失

我真的不希望必须根据搜索参数(我可以将其保存为会话变量)以编程方式重新构建页面,然后我必须再次重新运行搜索查询以获取结果。有没有一种方法可以像创建页面一样保存页面


谢谢

弹出一个包含此人信息的javascript窗口,而不是将他们带到另一个页面。在最坏的情况下,将person链接的目标设置为“新建”,这将强制打开新的浏览器窗口/选项卡

在某些地方必须保存搜索参数。在服务器端或客户端。在服务器端,您只有选项
session
flash
范围

在客户端,您可以将这些值存储在cookie中。这需要一些javascript

但是,理论上,浏览器将保留手动更改的表单字段值。他通过名称/id来标识表单字段。不需要以编程方式执行任何操作,除非您通过AJAX加载页面的某些部分。也许您可以双重检查,输入字段是否有静态名称/id对,或者您是否有一些元/缓存/html设置,这些设置禁止这种机制(双重检查,表单是否没有设置
autocomplete=“off”
设置。这将阻止浏览器重新填充表单字段

Grails本身并没有提供您需要的现成功能(我不知道是否有其他框架提供了这些功能——可能除了Seam,它有一个对话范围的概念;但是如果用户使用浏览器后退按钮,即使是这个功能也无法现成使用)。最简单的方法是让您的搜索页面具有某种缓存功能(对于浏览器,通过设置HTTP标题或元标记),以便在用户按下浏览器后退按钮时,浏览器不会再次尝试从服务器重新加载页面。然后再次选中
autocomplete=“off”
设置