JSF основной вопрос о объеме запроса - PullRequest
0 голосов
/ 23 мая 2011

Я думаю, что это основной вопрос JSF, но мне просто нужно немного пояснений ..

У меня есть страница входа, где у меня есть ссылка на страницу CreateAccount:

<div
id="TGOV_popAccount"
style="float: left; margin-left: 60px !important;"><a
href="/createAccount.jsp">Create Account</a></div>

Теперь эта страница JSP открывает JSF Facelet (да, уродливый дизайн):

createAccount.jsp:

<jsp:forward page="/WEB-INF/jsf/account/createAccount.jsf" />

так что теперь этот createAccount.jsf имеет CreateAccountBean в качестве базового компонента с областью действия request. в первый раз Я иду на страницу создания учетной записи, конструктор вызывает метод init (по какой-то причине @PostConstruct не вызывается автоматически, поэтому я вызываю его из конструктора ... может быть, из-за этого jsp forward? )

public CreateAccountBean() {
    init();
}

@PostConstruct
public void init() {
    userLoginVo = new UserLoginVo();
    logger.info("init called");
}

Если снова открыть мою страницу входа и перейти снова на страницу createAccount, init больше не вызывается, и я не понимаю, почему ... Имея объем запроса, он должен быть повторно инициализирован в этой ситуации, верно?

Можете ли вы объяснить мне, почему это не удается?

Спасибо.

1 Ответ

0 голосов
/ 23 мая 2011

Получите ваш JSF из /WEB-INF и немедленно ссылайтесь на него.

Что касается сбоя инициализации, скорее всего, страница обслуживалась из кэша браузера, а не с сервера.Создайте Filter, который сопоставлен с <servlet-name>facesServlet</servlet-name> и выполняет следующую работу в методе doFilter():

HttpServletResponse res = (HttpServletResponse) response;
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate"); // HTTP 1.1.
res.setHeader("Pragma", "no-cache"); // HTTP 1.0.
res.setDateHeader("Expires", 0); // Proxies.
chain.doFilter(request, response);
...