如何解决使用后备bean方法获取用户友好的URL时,我无法使用Rewrite API修饰我的URL Face
我正在尝试使用 OCPSoft Rewrite API 。我认为该文档还不够,SO中的问题还不足以解决我的问题。
问题1:
我将这些规则添加到配置 :( CityPageMB是ViewScoped CDI Bean)
.addRule()
.when( Direction.isInbound().and( URL.matches("{p}{sessionID}{s}") ) )
.perform(Redirect.temporary("{p}{s}"))
.where("sessionID").matches("#\\.\\w+")
.addRule()
.when( Direction.isInbound().and(Path.matches("/presentation/city.xhtml?{cityId}")) )
.perform( Redirect.temporary( "{userFriendlyUri}") )
.where("userFriendlyUri").bindsTo(PhaseBinding.to( El.method("#{cityPageMB.getUserFriendlyUri}","#{cityPageMB.getUserFriendlyUri}") ).after(PhaseId.RESTORE_VIEW))
.where("cityId").bindsTo(PhaseBinding.to( El.property("#{cityPageMB.cityId}") ).after(PhaseId.RESTORE_VIEW))
.addRule( Join.path("{userFriendlyUri}").to("/presentation/city.xhtml?{cityId}") )
.where("userFriendlyUri").bindsTo(PhaseBinding.to( El.method("#{cityPageMB.getUserFriendlyUri}","#{cityPageMB.getUserFriendlyUri}") ).after(PhaseId.RESTORE_VIEW))
.where("cityId").bindsTo(PhaseBinding.to( El.property("#{cityPageMB.cityId}") ).after(PhaseId.RESTORE_VIEW));
我想要的是,当我请求此URL时:
YeJayeKhoob.com/presentation/city.xhtml?cityId=82
地址栏中的URL变为以下形式:
/YeJayeKhoob.com/presentation/تهران-شهری-در-ایران (The name of city in Persian language).
以上规则似乎无效。我看到了肮脏的网址。
问题2:
我将这些规则添加到配置 :( HomePageMB是注入的ApplicationScoped CDI Bean)
.addRule()
.when( Direction.isInbound().and(Path.matches("/")) )
.perform( Redirect.temporary( context.getcontextpath() + "/" + URLEncoder.encode( homePageMB.getUserFriendlyUri(),"UTF-8" ) ) )
.addRule(Join.path( context.getcontextpath() + "/" + URLEncoder.encode( homePageMB.getUserFriendlyUri(),"UTF-8" ) ).to(context.getcontextpath() +"/"));
我想要的是,当我请求我的网站时:
YeJayeKhoob.com/
我在地址栏中看到了漂亮的URL:
YeJayeKhoob.com/به-یه-جای-خوب-خوشآمدید ("Welcome to YeJayeKhoob" in Persian language).
这一次,我看到了漂亮的URL,但状态404页面却很丑陋。 (如果我不使用URLEncoder.encode()
,则会收到问号而不是漂亮的问号)
但是当我删除Join.path()
并使用以下规则添加 pretty-config.xml 时:
<url-mapping id="home">
<pattern value="/به-یه-جای-خوب-خوشآمدید" />
<view-id value="/presentation/index.xhtml" />
</url-mapping>
有效。
问题是:
- 如何解决问题#1。
- 如何解决问题#2。
- 我需要
URLEncoder.encode()
还是 Rewrite 具有在后台执行此操作的方法。 - 是否有
El.method()
或一般API的文档,例如oracle document。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。