在jsf 1.2 icefaces(tomcat 6)中强制使用欢迎页面

时间:2018-07-23 11:01:01

标签: java jsf-1.2 icefaces

我的问题是我们的jsf专家不在办公室几个月了,我必须解决以下问题:

在我们的项目中是一个如下定义的欢迎页面:

<welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

index.jsp指向servlet

<servlet>
    <servlet-name>IndexServlet</servlet-name>
    <servlet-class>de.libname.servlet.IndexServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>IndexServlet</servlet-name>
    <url-pattern>/index.jsp</url-pattern>
</servlet-mapping>

在servlet中定义了一些导航规则,即特殊的起始页面:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    System.out.println("IndexServlet DoGet called");

    if (!getAgreedDSGVOState(request)) {
        // if not agreed dsgvo => force redirect to dsgvo page
        // dsgvo page will show login error or possibility to accept/denied
        response.sendRedirect("dsgvo.iface");
    }
    // some more cases deleted to keep it short
    else {
        response.sendRedirect("logout.jsp");
    }
}

现在,用户已登录,并且IndexServlet重定向到正确的起始页面。但是,如果用户单击注销按钮

<ice:commandButton title="#{bundle.logout}" immediate="true" action="logout" image="images/menu/btn_logout.png" panelConfirmation="confirmLogout" />

faces-config:

<navigation-rule>
    <display-name>gen_menu</display-name>
    <from-view-id>*</from-view-id>
    <navigation-case>
        <from-outcome>logout</from-outcome>
        <to-view-id>/logout.jsp</to-view-id>
        <redirect />
    </navigation-case>
</navigation-rule>

并直接再次登录,将不会调用IndexServlet。在这种情况下,我们的路由规则将被忽略。重新启动Tomcat。解决此问题的唯一可能性。它不是浏览器缓存(尝试隐身模式)。也许这是Java后端的缓存?登录(基于tomcat数据源领域的登录)后是否有可能强制使用IndexServlet?

对于Java和jsf来说我是一个新手,:-)请告诉我是否需要更多上下文。

谢谢丹尼斯

0 个答案:

没有答案