我有一个jsf应用程序,我想隐藏网址,并在网页之间切换时只保留网址中的应用程序名称。
那是我的网址:
> http://localhost:8080/PlanificationDrapageWeb/faces/admin/adminHome.xhtml
> http://localhost:8080/PlanificationDrapageWeb/faces/cuisson/Home.xhtml
这就是我想要的东西:
> http://localhost:8080/PlanificationDrapageWeb/
我怎样才能得到这个结果?
答案 0 :(得分:3)
正如MaVRoSCy所说,您可以使用Prettyfaces重写您的网址。他们的文档非常有用且非常清晰。以下是要遵循的步骤(没有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)现在,在托管bean中定义outcome
时,您应该返回pretty:idOfURLMapping
。例如:pretty:accueil
将重定向到上面的第一个定义页面,通常会将http://localhost:8080/PlanificationDrapageWeb/
显示为URL。
最后,请注意,只有当它是功能要求时才应使用它。否则我会使用没有扩展的URL,如BalusC所提到的(他的方法或者你想要高级的Prettyfaces功能)
的修改
似乎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>
现在,当您想要更改页面时,只需更改PageManagedBean.includedPage值即可。
答案 1 :(得分:2)
尝试使用prettyFaces。
PrettyFaces是一个增强的OpenSource URL重写库 支持JavaServer Faces - JSF 1.1,1.2和2.0 - 启用 创建具有书签功能的漂亮网址。
另请参阅此UrlRewriteFilter with Glassfish有关如何执行此操作的更多信息。