ich versuche, eine @SessionScoped-Komponente nach dem Ändern einer Eigenschaft zu beobachten. HttpSessionAttributeListener löst keine Änderungen in cdi-verwalteten Komponenten aus.cdi beobachten Sitzungsbereichs-Bean geändert
@SuppressWarnings("serial")
@SessionScoped
public class TestSession implements Serializable {
private User user;
public TestSession() {
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
}
Ein Beispiel Servlets:
@SuppressWarnings("serial")
@WebServlet(name = "demo", urlPatterns = "/demo")
public class DemoServlet extends HttpServlet {
private static final Logger logger = LoggerFactory.getLogger(DemoServlet.class);
@Inject
private TestSession testSession;
@Override
protected void doGet(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
throws ServletException, IOException {
User user = new User(1L,new Role(1L));
user.setId(RandomUtils.nextLong());
testSession.setUser(user); //listen that component change something
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/WEB-INF/jsp/demo.jsp");
dispatcher.forward(httpServletRequest, httpServletResponse);
}
}
Ist das eine Art und Weise, wenn die Komponente Änderung jedes Attribut zu hören? Hat irgendjemand einen Ansatz dafür?
Wichtig: Ich habe keinen Zugriff auf Code oder TestSession Java-Klasse oder Servlet neu schreiben oder hinzufügen.
Ihre Klassen sind im selben Krieg wie TestSession und Servlet? – Rouliboy