我正在开发.jsp页面,spring MVC,dojo 1,10.2。我创建了带有复选框的dojo树的JSP页面。当我单击下一个按钮时,它将进入下一个jsp页面。如果我按下后退按钮,树重新加载,所有复选框都将取消选中。
按下后退按钮时,如何选中所有先前选中的复选框。我是否需要在转到下一页之前保存复选框状态,然后选中参考已保存数据的复选框。
还有其他方法可以达到这个目的吗?
答案 0 :(得分:0)
网络是一个无国籍的地方,所以是的,你必须在某个地方保存状态,有几种方法可以做到这一点......你可以依赖将数据存储在数据库/文件/ ...中的后端服务,或者您可以使用其中一种新的HTML5功能,如会话存储或本地存储。
以会话存储为例,您可以这样做:
首先,您需要一些函数来加载和存储数据。由于您只能在session-和localstorage中存储简单字符串,因此我将它们序列化为JSON:
var store = {
save: function(object) {
sessionStorage.setItem('fruits', JSON.stringify(object));
},
load: function() {
return JSON.parse(sessionStorage.getItem('fruits') || '{}');
}
};
然后在每次更改时都可以存储数据:
registry.byId("apple").on("change", function(value) {
fruits.apple = value;
store.save(fruits);
});
registry.byId("banana").on("change", function(value) {
fruits.banana = value;
store.save(fruits);
});
registry.byId("lemon").on("change", function(value) {
fruits.lemon = value;
store.save(fruits);
});
最初您可以加载数据:
var fruits = store.load();
并使用它来初始化小部件的状态:
registry.byId("apple").set("value", fruits.apple || false);
registry.byId("banana").set("value", fruits.banana || false);
registry.byId("lemon").set("value", fruits.lemon || false);
这是一个示例:http://jsfiddle.net/3b2s15xm/尝试更改选项并重新加载页面。通常情况下,复选框会再次被取消选中,但现在它会在您加载页面时从会话存储中重新加载数据。
您需要知道的一件事是,您需要支持的浏览器是否具有这些HTML5功能,您可以在caniuse.com上查看。