Хорошо, со всеми ответами на this question Я все еще не в состоянии справиться со своей проблемой. У меня следующее созвездие:Как предотвратить многократное использование метода бобовых объектов запроса в приложении JSF?
В JSF (1.1) webapp У меня есть запрос на фасоль bean
класса Bean
. Когда пользователь быстро нажимает на несколько раз, чтобы перенаправить его на страницу insult.xhtml
, метод doSomethingThatTakesALittleLongerAndShouldOnlyBeDoneOnce
может вызываться несколько раз (на Tomcat 6). Как я могу это предотвратить?
...
public Bean() {
HttpSession session = ((HttpSession) FacesContext.getCurrentInstance()
.getExternalContext().getSession(false));
if(session != null && session.getAttribute("done") != null) {
doSomethingThatTakesALittleLongerAndShouldOnlyBeDoneOnce();
session.setAttribute("done", "done");
}
}
public void doSomethingThatTakesALittleLongerAndShouldOnlyBeDoneOnce() {
this.bossInsult = generateBossInsult();
}
insult.xhtml:
<ui:composition xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core">
<html>
<body>
#{bean.bossInsult}
</body>
</html>
</ui:composition>
Это будет работать, к сожалению, реальная ситуация немного отличается от моего примера. Переадресация происходит со сторонней страницы, которая находится вне моего контроля. – ceggers