首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中美化路由?

如何在Java中美化路由?
EN

Stack Overflow用户
提问于 2019-02-25 17:49:29
回答 1查看 447关注 0票数 1

面对关于如何在Java /Jakarta(版本7或8)中美化路由的Internet上糟糕的文档和指南。我想问问你们是否有什么建议。

我目前正在使用OCPsoft重写,但是它们的文档、指南和社区看起来很轻或很安静。

如何将基本的XHTML路由转换为一些漂亮的URL,比如views/mypage.xhtml,比如/path/to/mypage

或者很多在Java /Jakarta中的人不关心美化路线?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-26 00:37:27

重写过滤器(PrettyFaces)是最常用的过滤器之一。事实上,这是如此普遍,我们实际上在这里简要地介绍了这个问题,在Chalmers的网络应用课程中,这是几年前的事了。要使用它,首先需要将下列依赖项添加到POM文件中;

代码语言:javascript
复制
<dependency>
    <groupId>org.ocpsoft.rewrite</groupId>
    <artifactId>rewrite-servlet</artifactId>
    <version>3.4.2.Final</version>
</dependency>
<dependency>
    <groupId>org.ocpsoft.rewrite</groupId>
    <artifactId>rewrite-config-prettyfaces</artifactId>
    <version>3.4.2.Final</version>
</dependency>

PrettyFaces完全使用JavaEE运行时注释-因此一旦添加它,就应该可以使用它。接下来,定义配置--默认情况下,它将在您的pretty-config.xml目录中查找一个WEB-INF/文件。一个基本的设置可以像这样;

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<pretty-config xmlns="http://ocpsoft.org/schema/rewrite-config-prettyfaces" 
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xsi:schemaLocation="http://ocpsoft.org/schema/rewrite-config-prettyfaces
               http://ocpsoft.org/xml/ns/prettyfaces/rewrite-config-prettyfaces.xsd">         
    <url-mapping id="home"> 
        <pattern value="/" /> 
        <view-id value="/index.xhtml" />
    </url-mapping> 
    <url-mapping id="view-authors">
        <pattern value="/authors" />
        <view-id value="/author/list.xhtml" />
    </url-mapping>
    <url-mapping id="delete-author">
        <pattern value="/authors/delete/#{id}"/> 
        <view-id value="/author/delete.xhtml?id=#{id}" />
    </url-mapping>
    <url-mapping id="edit-author">
        <pattern value="/authors/edit/#{id}"/> 
        <view-id value="/author/edit.xhtml?id=#{id}" />
    </url-mapping>    
</pretty-config>    

本质上,您可以阅读上面的内容,使view-id可以像pattern中指定的那样可访问。要读取id值,您可以在页面上指定以下内容(就像通常一样);

代码语言:javascript
复制
<f:metadata>
    <f:viewParam name="id" value="#{bean.id}" />
</f:metadata>

从一段时间以来,PrettyFaces还支持注释--允许您跳过“漂亮-config.xml”文件,直接在后台bean类的基础上指定备用URL模式。

代码语言:javascript
复制
@URLMapping(pattern = "/authors/edit/#{id}", viewId = "/author/edit.xhtml?id=#{id}")

您可以在这里找到有关这些注释的更多信息;https://www.ocpsoft.org/prettyfaces/annotations-support-is-coming-to-prettyfaces-url-rewriting/

虽然PrettyFaces允许您控制URL的完整结构(包括参数),但是如果您只需要去掉扩展,就可以使用OmniFaces ExtensionlessURL filter (http://showcase.omnifaces.org/facesviews/ExtensionlessURLs) --它就是这样控制的;

代码语言:javascript
复制
<context-param>
    <param-name>org.omnifaces.FACES_VIEWS_SCAN_PATHS</param-name>
    <param-value>/*.xhtml</param-value>
</context-param>

这将使视图在没有xhtml扩展的情况下可以直接访问。要将OmniFaces添加到项目中,只需在POM中指定以下内容;

代码语言:javascript
复制
<dependency>
    <groupId>org.omnifaces</groupId>
    <artifactId>omnifaces</artifactId>
    <version>3.2</version>
</dependency>

我还想提到的是,在这个领域(在实现中),应用程序提交自己的解决方案并自己实现“美化”并不少见--当应用程序需要根据一些随机ID“生成”自己的URL时,这种情况尤其常见。这可以通过在请求分派器上实现调用forward()的自定义筛选器来实现。这显然可以让你更进一步,做任何你想做的事。当然,你真的可以使用PrettyFaces --但我想有些人只是喜欢这样做。

很抱歉,我在网站上找不到一个好的,彻底的报道,所以我想我还是写一篇吧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54871968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档