Если вы задаете URL для свойства menuItem.url
, оно отображается как простая гиперссылка с использованием href . Если щелкнуть это, браузер перейдет к указанному URL-адресу и запросит его с помощью GET
вместо выполнения запроса POST
, необязательно с использованием AJAX. В конечном итоге это не обновит ": content" AJAX и не вызовет ваш метод действия themeSwitcherBean.changeToNew
.
Для того, чтобы ваш метод действия вызвал, вы должны пропустить эту строку :
menuItem.setUrl(subMenu.getServletPath());
Если вы обнаружите, что вам нужно перезагрузить всю страницу (что, вероятно, при переключении тем) вместо элемента, на который ссылается только ": content", заставьте ваш метод действия вернуть эту инструкцию как String
:
public String changeToNew() {
// do something ...
// ...
String viewId = FacesContext.getCurrentInstance().getViewRoot().getViewId();
return viewId + "?faces-redirect=true&includeViewParams=true";
}
В этом случае вы можете отключить AJAX в этом пункте меню, немного уменьшив накладные расходы на запрос / ответ / javaScript:
menuItem.setAjax(false);