Я новичок в Java EE 6 и недавно играл в разговоры. Я не смог выяснить, как начать разговор сразу после загрузки страницы JSF (как в Seam). Это выполнимо?
Это выполнимо.
Страница:
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <f:view contentType="text/html"> <f:metadata> <f:event type="preRenderView" listener="#{myBean.preRenderView}"/> </f:metadata> <h:head> <title>My Page</title> </h:head> <h:body> <!-- Body here --> </h:body> </f:view> </html>
Bean:
import java.io.Serializable; import javax.enterprise.context.Conversation; import javax.enterprise.context.ConversationScoped; import javax.faces.event.ComponentSystemEvent; import javax.inject.Inject; import javax.inject.Named; @Named @ConversationScoped public class MyBean implements Serializable { public void preRenderView(ComponentSystemEvent e) { String currentViewId = FacesContext.getCurrentInstance().getViewRoot().getViewId(); if (CONVERSATION_START_PAGE.equals(currentViewId)) { conversation.begin(); } @Inject private Conversation conversation; private static final String CONVERSATION_START_PAGE = "/foo/bar/start-page.xhtml"; }