【问题标题】:Start conversation on page load在页面加载时开始对话
【发布时间】:2011-10-05 16:53:58
【问题描述】:

我是 Java EE 6 的初学者,最近正在玩对话。当 JSF 页面被加载(如在 Seam 中)时,我无法找到如何立即开始对话。这可行吗?

【问题讨论】:

    标签: jsf-2 java-ee-6


    【解决方案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";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多