【问题标题】:Web Flow + JSF integration default pageWeb Flow + JSF 集成默认页面
【发布时间】:2025-11-29 21:15:01
【问题描述】:

我使用 Web Flow 和 JSF,所以它们实际上运行良好。但我正在尝试寻找与在 index.html 上重定向不同的设置默认页面的替代方法。

主要问题是网络分析脚本无法正常工作。我无法在主页前跟踪用户来源。

应用程序在 Tomcat 8 上运行

Web.xml

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

index.html

<html>
    <head>
        <meta http-equiv="Refresh" content="0; URL=web/home-page">
    </head>
</html>

更新:

我将 index.html 替换为 index.jsp,并将响应状态设置为 301。至少它适用于 google 分析,所以我会检查一下其他分析工具。 但是这个解决方案仍然没有让我满意。

Web.xml

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

index.jsp

<%
response.setStatus(301);
String path=(String)request.getAttribute("javax.servlet.forward.request_uri");
if(path==null){
    path="web/home-page";
}
response.setHeader( "Location", path);
response.setHeader( "Connection", "close" );
%>

【问题讨论】:

  • 我对Spring Web Flow不熟悉,为什么不能在welcome-file中指定想要的文件?
  • 感谢您的建议,但它不能像 JSF 那样使用表达式并且其他功能不起作用。它不只是呈现简单的 HTML。
  • @erdoganonur 你在用spring security项目吗?
  • 是的,我正在使用 sprin security 3.2.4 和 web flow 2.4.0
  • @erdoganonur 是的,您的 viewframe 工作不知道如何解析欢迎文件。我打算建议使用 spring security 项目来处理请求的路由来替代欢迎文件的功能。这样,在本例 JSF 中,任何由 Spring Security 执行的对任何视图的重定向都将被您的视图框架拾取。 Spring 安全项目在这方面是相当模块化的。

标签: jsf jsf-2 web.xml spring-webflow spring-webflow-2


【解决方案1】:

我会使用 spring 安全项目而不是欢迎文件,因为 JSF(或任何视图框架)不知道如何解析欢迎文件中的视图,这就是您的逻辑未执行的原因。

如果您使用的是 spring 安全项目,一个可能的解决方案是。将以下内容添加到您的安全配置中

<security:http auto-config="true" use-expressions="true">
<!--- config omitted for brevity -->
<security:session-management invalid-session-url="/index.jsp"/>
</security:http>

这只是一个示例。您还可以使用其他方式来定义规则。它非常模块化

<security:intercept-url pattern="/**" ....

此外,您需要定义一个具有以下定义的无类控制器:(假设您还使用带有 Webflow 的 Spring MVC)

<mvc:view-controller path="/index.jsp" />

我认为在 Spring Security 配置中定义拦截、转发、路由等规则并不那么神秘,这样很明显,任何此类规则都存储在一个地方。

注意:您可能能够保留当前设置并使用该 spring &lt;mvc:view-controller path="/index.jsp" /&gt; 定义仅触发 JSF 执行。

【讨论】: