Я реализую общий контроллер таким образом, что он обрабатывает программные объявления js/css-файлов, выраженные как ArrayList, который затем добавляется к модели &, вытолкнутой в jsp.Spring MVC Model choking on ArrayList
Проблема заключается в том, что все работает до тех пор, пока я не добавлю путь к списку дополнительныхJsFilePath, в котором я получаю пустую страницу (ничего, без тэгов) в браузере.
Соответствующий код выглядит следующим образом:
LoginController.java (расширяет BaseController)
@RequestMapping(value="/login", method = RequestMethod.GET)
public String login(ModelMap model) {
doInitialRenditions();
this.addJsFilePath("../jquery.min.js"); // THIS LINE BREAKS IT
/*
this.addJsFilePath("../jquery.otherfile.js");
this.addJsFilePath("../xxxx.login.js");
*/
doFinalRenditions(model);
model.addAttribute("jsFile", "../jquery.min.js");
return "login";
}
BaseController.java
@Controller
public class BaseController {
public List<String> additionalJsFilePaths;
public List<String> additionalCssFilePaths;
protected void init(){
additionalJsFilePaths= new ArrayList<String>();
additionalCssFilePaths= new ArrayList<String>();
}
protected void doInitialRenditions(){
init();
}
protected void addJsFilePath(String path){
additionalJsFilePaths.add(path);
}
protected void addCssFilePath(String path){
additionalCssFilePaths.add(path);
}
protected void doFinalRenditions(ModelMap model){
model.addAttribute("jsFiles", additionalJsFilePaths);
model.addAttribute("cssFiles", additionalCssFilePaths);
}
}
Я даже не ставить в любом коде для доступа к jsFiles L ist внутри .jsp, поэтому проблема связана с двумя вышеуказанными файлами. Просто тот факт, что я заполняю ArrayList, достаточно, чтобы сломать его. Также: то же самое происходит со всем кодом BaseController в LoginController, поэтому не думайте, что это некоторая глупая ошибка с наследованием.
Любая помощь с благодарностью получена.
Спасибо, но LoginController аннотирован, я намеренно не воспроизводил весь класс здесь для ясности. Как я уже говорил в оригинале вопрос, он работает до тех пор, пока элемент списка не будет добавлен, поэтому проблема не может быть связана с пружиной, не поднимающей контроллер. Что касается логики MVC: да, конечно, где ресурсы действительно статичны (т. е. общие для всех страниц) - здесь, однако мы добавляем материал, который уникален для отдельной страницы. – tacticAl
@tacticAl Аннотации на базовом контролере избыточны тогда. «Мы добавляем материал которая уникальна для отдельной страницы »- не делайте этого в контроллере, если это логика просмотра/отображения, она полностью противоречит архитектурному шаблону MVC, о котором вы только что сказали, что согласились. Кроме того, у вас есть много логики, чтобы просто добавить один атрибут модели, который сам по себе не должен быть выполнен. – NimChimpsky
_ Также у вас есть много логики, чтобы просто добавить один атрибут модели, который сам по себе не должен быть выполнен._ Я оставляю вас сделать очевидный вывод о том, сколько атрибутов * будет добавлено, когда эта вещь сделает все, что она должна. Мы уходим отсюда. Проблема заключается в проблеме ArrayList - серверные журналы молчат об этом. – tacticAl