1

我对 jsf 显示的默认 URL 有一些问题:

网址显示如下:

www.URL.com/PROYECT_NAME/

我想要这样的东西

www.URL.com/PROYECT_NAME/home

我像这样发送了欢迎文件。

<welcome-file-list>
   <welcome-file >faces/views/home.xhtml</welcome-file>
</welcome-file-list>

所以我真正想要的是,当 jsf 显示欢迎文件时显示和 url 像这样 www.URL.com/PROYECT_NAME/home 或完整的路由 faces/views/home.xhtml。

我知道这是一个愚蠢的问题,但我很喜欢它

4

1 回答 1

0

可以使用PrettyFaces等基于过滤器的 servlet 扩展来实现这一点。

它使用简单,有很好的文档和示例,但为了说明您的案例,您可以执行以下操作:

  • 下载 prettyfaces.jar 并添加到您的类路径中。通常是/WEB-INF/lib文件夹。
  • 将包含 URL 映射的 pretty-config.xml 文件添加到该/WEB-INF文件夹​​。

pretty-config.xml 文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.3 http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.3.xsd">

    <url-mapping id="home">
        <pattern value="/home" />
        <view-id value="/home.xhtml" />
    </url-mapping>

</pretty-config>

要从控制器重定向到此映射,您应该使用pretty:+之类的字符串url-mapping-id

控制器 bean 示例:

@ManagedBean
@ViewScoped
public class HomeBean
{
    public String goHome()
    {
        return "pretty:home";
    }
}

而已。每当您发出请求时,如果 PrettyFaces 过滤器找到 url 映射模式/home,它将显示视图 id home.xhtml,但将 URL 保留为/home. 漂亮的。

另外,作为建议,welcome-file-list您只能添加index.html.

web.xml 欢迎文件列表标签示例:

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

并将这样的 index.html 文件添加到您的应用程序根文件夹中。

index.html 文件示例:


    <!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">
        <head>
            <title>My Application</title>
            <meta http-equiv="content-type" content="text/html; charset=utf-8" />
            <meta http-equiv="refresh" content="0;url=/myapplication/home" />
        </head>
        <body>
            <h3>Loading...</h3>
        </body>
    </html>

通过这样做,每当有人请求您的应用程序时,它将获得一个快速加载页面,并将被重定向到/home.

我希望它有所帮助。

于 2012-04-09T21:17:09.200 回答