在页面加载时开始对话
Posted
技术标签:
【中文标题】在页面加载时开始对话【英文标题】:Start conversation on page load 【发布时间】:2011-10-05 16:53:58 【问题描述】:我是 Java EE 6 的初学者,最近正在玩对话。当 JSF 页面被加载(如在 Seam 中)时,我无法找到如何立即开始对话。这可行吗?
【问题讨论】:
【参考方案1】:这是可行的。
页面:
<?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>
豆子:
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";
【讨论】:
以上是关于在页面加载时开始对话的主要内容,如果未能解决你的问题,请参考以下文章