Я новичок в Spring и веб-приложениях.
Я создаю объект, содержащий размер шрифта в моем контроллере, а затем добавляю его в модель.
private String fontSize = "24";
@RequestMapping(value = "/", method = RequestMethod.GET)
public final ModelAndView mainGet(final HttpServletRequest request, final HttpServletResponse response)
throws ServletException {
ModelAndView model = new ModelAndView("home");
model.addObject("fontSize", fontSize);
return model;
}
Я передаю его JSP, и я установил размер шрифта с помощью jQuery. В приложении у меня есть кнопки для изменения размера шрифта... все работает, но когда я обновляю или изменяю страницу, эти настройки теряются.
Как сохранить это значение в модели? Должен ли я выполнять пост-вызов через AJAX каждый раз, когда меняю размер?
Автоматическая настройка обратной связи между сервером и клиентом отсутствует. Если вы сделаете изменения на клиенте, скажем, используя jQuery, и вы хотите сохранить это изменение, вы должны где-то сохранить значение. Вы можете сделать это на стороне сервера, например, в базе данных настроек или в сеансе контейнера сервлета. Или вы можете сделать это на стороне клиента, например, используя локальное хранилище или файлы cookie. Вы даже можете сохранить его как часть объекта состояния в своем HTML и передать объект состояния с собой при навигации по сайту.
Правильное место для хранения зависит от вашего варианта использования и дизайна вашей системы. Вы, безусловно, можете использовать AJAX для публикации обновленного значения каждый раз, когда пользователь вносит изменения, а это значит, что вам понадобится метод для его обработки и сохраняйте значение где-то, как в следующем (непроверенном) коде:
@RequestMapping(value = "/prefs/fontSize", method = RequestMethod.PUT)
public void putFontSize(@RequestBody String fontSize)
throws ServletException {
// persist fontSize here.
}
Okey, мне это удалось...
Я загрузил jQuery Cookie Plugin, я думаю, что лучший способ сохранить это значение - это сделать с помощью cookie (или, может быть, это самый простой способ).
Это ссылка на плагин, который я использовал: