Привет всем,
Я использую Spring MVC 3 + Sitemesh и Spring Security 3. Мне нужно сделать следующий сценарий.
Я использую 2 разных макетов для обхода пользователей и обычных пользователей. подход, которым я придерживался, работал нормально, пока я не столкнулся с некоторыми всплывающими окнами JavaScript, потому что я заметил, что страница загружалась дважды и всплывала в одном и том же окне дважды. пожалуйста, подтвердите мой подход.
Класс контроллера -
@RequestMapping(value = "/mainMenu")
public class PortalController {
@RequestMapping(method = RequestMethod.GET)
public String byPassPortal() {
if (User.bypassMenu()) {
//return "redirect:user.html";
//return "forward:user.html";
return "/user/user";
} else {
// send user to the portal page
logger.debug("Redirect to the main page");
return "mainMenu";
}
}
}
сайт сетчатого декоратора xml -
<decorators defaultdir="/decorators">
<decorator name="layout" page="layout.jsp">
<pattern>/user*</pattern>
</decorator>
<decorator name="default" page="default.jsp">
<pattern>/*</pattern>
</decorator>
</decorators>
вот мои наблюдения - если я использую return "redirect:user.html";
& return "forward:user.html";
, он работал нормально с правильным макетом (layout.jsp
) для пользователей, так как декоратор будет ловить его по шаблону <pattern>/user*</pattern>
. но проблема в том, что форма будет загружаться дважды, и я получаю всплывающее окно дважды.
если я использую return "forward:user.html";
или return "/user/user";
, всплывающее окно появится только один раз, но макет неправильный. Причина в том, что он не будет получен от декоратора для шаблона URL <pattern>/user*</pattern>
и будет использовать макет по умолчанию неправильно (default.jsp
).
Я думаю, что есть что-то, что нужно обрабатывать со стороны пружины, а не с сайта. Можете ли вы дать некоторые рекомендации среди этого? Заранее спасибо.