如何隐藏应用程序名称后面的 JSF URL?

2024-04-23

我有一个 jsf 应用程序,我想隐藏 url,并在页面之间切换时仅保留 URL 中的应用程序名称。

这就是我的网址:

> http://localhost:8080/PlanificationDrapageWeb/faces/admin/adminHome.xhtml
> http://localhost:8080/PlanificationDrapageWeb/faces/cuisson/Home.xhtml

这就是我想要的:

> http://localhost:8080/PlanificationDrapageWeb/

我怎样才能得到这个结果?


正如 MaVRoSCy 所说,您可以使用 Prettyfaces 来重写您的 URL。他们的文档非常有用而且非常清晰。以下是要遵循的步骤(没有 Maven 依赖项方法):
1) 根据您的 JSF 版本下载最新的 jar 并将其放入项目类路径中。
2)添加以下内容web.xml

<filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>
    <dispatcher>ERROR</dispatcher>
</filter-mapping>

3)创建下WEB-INF一份文件:pretty-config.xml这将定义你的漂亮面孔映射,如下所示:

<pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.0" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
           xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.0
                                    http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.0.xsd">

<url-mapping id="accueil"> 
    <pattern value="/" /> 
       <view-id value="/path-to-yourpage.xhtml" />             
</url-mapping>

<url-mapping id="error"> 
    <pattern value="/" /> 
    <view-id value="/tpath-to-yourpage2.xhtml" />   
</url-mapping>
</pretty-config>

4)现在定义时outcome在你的托管bean中,你应该返回pretty:idOfURLMapping。例如:pretty:accueil将重定向到上面第一个定义的页面,通常会显示http://localhost:8080/PlanificationDrapageWeb/ as URL.
最后,请注意,只有在功能要求时才应该使用它。否则我会使用不带扩展名的 URL,如 BalusC 提到的(他的方法或者如果你想要高级 Prettyfaces 功能)。
EDIT
看来 Prettyfaces 不适合这种情况。很抱歉浪费您的时间。
现在我建议另一种可能的解决方案,因为 BalusC 的答案已被删除。
1) 创建一个新的会话范围托管 bean,我们将其命名为:PageManagedBean:

public class PageManagedBean {
  private String includedPage = "/pages/accueil.xhtml";
  //Setters and getters
}

2) 创建主布局页面(Facelets 模板):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:ui="http://java.sun.com/jsf/facelets"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:f="http://java.sun.com/jsf/core"
  xmlns:p="http://primefaces.org/ui">
<h:head>        

<ui:insert name="head"></ui:insert> 
</h:head>
<h:body>  

<div class="pagewidth">
<ui:include src="shared/header.xhtml"/>
<!-- Content -->
<div class="page_content">
    <div class="page_content_inner">
        <div class="container">                
            <ui:include id="pageLivre" src="#{pageManagedBean.includedPage}"/>                  
        </div> 

    </div>
 </div>
 <div class="page_content_footer"/>
 <ui:include src="shared/footer.xhtml"/>
</div>
</h:body>

现在,当您想要更改页面时,只需更改 Page ManagedBean.included Page 值即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何隐藏应用程序名称后面的 JSF URL? 的相关文章

随机推荐

  • 在 I/O 中使用 char16_t 和 char32_t

    C 11介绍char16 t and char32 t以便于处理 UTF 16 和 UTF 32 编码的文本字符串 但是
  • 这在 imacros javascript 中可能吗?尝试了很多方法都没有成功

    我已经处理了所有事情 但不幸的是它返回了 未定义 的数据 我尝试了许多不同的方法来从该网站获取数据 不成功 我在其他论坛上发布了这个问题 没有人能够解决这个问题来处理完整的数据提取 我需要像这样保存数据 91 228 53 28 8089
  • VS Code 刷新集成终端环境变量,无需重新启动/注销

    如果您在 Windows 上添加 更改某些环境变量 例如 PATH 即使重新启动 VS Code 后 它也不会在 VS Code 集成终端中可用 但是 如果您从 Windows 命令提示符 Powershell 打开该终端 它将具有这些新的
  • 获取设备屏幕分辨率

    我使用以下方法来获取屏幕尺寸 public static Point getScreenSize Context context WindowManager wm WindowManager context getSystemService
  • Laravel 5 Blade 在出现错误时显示空白页而不是抛出异常

    在 laravel 4 中 当你尝试渲染一个不存在的视图时应用程序 视图或者带有未定义变量的视图 laravel 将抛出异常或显示有助于调试的错误 我全新安装了 laravel 5 0 13 并且在对刀片模板进行故障排除时遇到了困难 该模板
  • useCallBack 和 useEffect 无限循环

    根据下面的代码 我需要在任何时候调用一个函数inView是真的 但是使用 useEffect and useCallback列出依赖项 我会导致无限循环 我设法避免它的唯一方法是不列出依赖项 但我收到一条警告 要求我列出它们 我只尝试过us
  • RGB 值作为变量

    如何在 rgb 中存储变量值 我使用这个不起作用的代码 我希望它是这样的 但不知怎的 它没有正确存储 R 将引号放在 200 左右 否则 R 也不起作用 我假设你正在使用 JavaScript 结果在 colval rgb 200 10 1
  • 运行“应用程序时出错:未找到目标设备”。 Android Studio 3.6 预览版

    初学者 无法在 Android Studio 3 6 上运行我的第一个 Android 应用程序 如何进行正确的设置才能在模拟器中查看预览设备 I tried the same question and discussion but fai
  • USR1 信号后可靠地终止睡眠进程

    我正在编写一个 shell 脚本 它定期执行任务并从另一个进程接收 USR1 信号 该脚本的结构类似于这个答案 https stackoverflow com a 27694965 1402511 bin bash trap echo do
  • Pygame 中按钮内的进度条

    期望的行为是 当用户将鼠标放在按钮上时 会出现深灰色进度条并开始以恒定的速度递增 我希望能够确定它完全充满需要多长时间 比如 2 秒 如果在进度条达到 100 之前鼠标移出按钮 进度条应直接变为 0 如果条达到 100 程序应在终端中打印一
  • 将重定向运算符与 Java Runtime Exec 一起使用

    我有这个字符串 在 Windows XP 的 JVM 中与 Runtime exec 一起使用 String cmd encoderFull i originalFull bitrate bitrateVBR i bvhq avi outp
  • 将全屏宽度和高度部分分为 3 行

    我有一个完整的宽度和高度部分 html 主页 我怎样才能将这个部分分成 3 行 div 每个 div 都是全宽并具有响应式背景图像 请建议我如何使用 css 和响应式页面来做到这一点 下面是解决方案 对于背景 2 在 css 代码或媒体查询
  • 在 Objective-c 问题中访问委托静态方法

    我在 Objective c 中遇到了一个奇怪的问题 这是代码 STViewController h import
  • 当鼠标在屏幕上移动时,角色仅保持移动?

    我的 while 循环仅在光标在屏幕内移动时维持精灵的移动 我尝试重新组织一些 screen blits 和 display update 和 display flip 我似乎无法弄清楚为什么角色在一个像素发生变化后停止 而不是像我预期的那
  • Java中如何进行方法链? o.m1().m2().m3().m4()

    我在许多 Java 代码符号中看到 在一个方法之后我们调用另一个方法 下面是一个例子 Toast makeText text setGravity Gravity TOP 0 0 setView layout show 调用后如您所见mak
  • TextKit:Xcode 中的编辑器占位符功能是如何实现的?

    我深入研究了 TextKit 想知道编辑器占位符是如何在 Xcode 代码编辑器中实现的 您也可以自己尝试一下并输入以下内容 lt Hello gt 它会自动变成占位符 Xcode 编辑器是使用 TextKit 构建的 经过一番研究 我想出
  • Android 中转义多个“%”字符

    在 我有这个野兽般的条目 归结为合理的最小值以重现效果
  • 通过 AWS API Gateway 上传的 PDF 已损坏

    我正在尝试使用已部署到 AWS API 网关的 C Web API 通过 Web 表单将 PDF 上传到 S3 存储桶中 这是我的代码 private static IAmazonS3 s3Client public static asyn
  • 核心数据:executeFetchRequest 与 PerformFetch

    我想要一份关于两者之间比较的完整列表 我所知道的事情 executeFetchRequest 消息已发送至 MOC 返回托管对象的数组 目标 从持久存储中获取对象到 MOC With table view 与表视图无关 频率 经常在循环中使
  • 如何隐藏应用程序名称后面的 JSF URL?

    我有一个 jsf 应用程序 我想隐藏 url 并在页面之间切换时仅保留 URL 中的应用程序名称 这就是我的网址 gt http localhost 8080 PlanificationDrapageWeb faces admin admi