2015-05-13 3 views
0

Я работаю над .jsp страницей, весной MVC, dojo 1,10.2. Я создал страницу JSP с деревом dojo с флажком. Когда я нажимаю следующую кнопку, она переходит на следующую страницу jsp. если я нажму кнопку «Назад», перезагрузка дерева и все флажки будут сняты.dojo tree checkbox утерян при перезагрузке

Как я могу установить флажок «Все предыдущие флажки», если нажать кнопку «Назад». Нужно ли сохранять состояние флажка перед переходом на следующую страницу, а затем установить флажок, относящийся к сохраненным данным.

Есть ли другой способ достичь этого?

+0

Я думаю, что у вас в принципе есть правильная идея в том, что вам нужно будет сохранить состояния флажков и обратиться к ним, когда вы вернетесь – Richard

ответ

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.

Смежные вопросы