Jsf 在Ocpsoft重写中,如何将未定义数量的路径参数映射到请求参数?
目前,我正在尝试以下JSF-Lib: 我有以下问题: 我有一页: /page.jsf 在我的页面中,我有不止一个参数。 例如,我有: -参数1 -参数2Jsf 在Ocpsoft重写中,如何将未定义数量的路径参数映射到请求参数?,jsf,dynamic,path-parameter,ocpsoft-rewrite,Jsf,Dynamic,Path Parameter,Ocpsoft Rewrite,目前,我正在尝试以下JSF-Lib: 我有以下问题: 我有一页: /page.jsf 在我的页面中,我有不止一个参数。 例如,我有: -参数1 -参数2 String parameter1 = FacesContext.getCurrentInstance().getExternalContext() .getRequestParameterMap().get("parameter1"); String parameter2 =
String parameter1 = FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get("parameter1");
String parameter2 = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
.get("parameter2");
目前我了解我可以在我的UrlConfigProvider类中添加以下内容:
.addRule(Join.path(“/page/{parameter1}”).to(“/portal/mypage.jsf”)
.withInboundCorrection())
这适用于一个参数
但是如何对多个参数执行此操作,因此URL为:
/第/{parameter1}/{parameter2}页
有什么想法吗?重写API没有为这个问题带来本机解决方案
启动示例
.addRule()
.何时(/*您的状况*/)
.perform(新的HttpOperation(){
@凌驾
public void performHttp(HttpServletRewrite HttpServletRewrite,EvaluationContext EvaluationContext){
//这是默认的包装器
HttpWriteWrappedRequest请求=((HttpWriteWrappedRequest)httpServletRewrite.getRequest());
//获取uri(示例:'/index/p1/p2')
字符串uri=httpServletRewrite.getRequest().getRequestURI();
//斜线分割
String[]split=uri.split(“/”);
//这是具体的例子
//拆分值0为空,拆分值1为页面(例如“索引”)
//对于每个文件夹增量,索引
//对于“/pages/index”,起始索引应为3
对于(int i=2;i
解释 唯一重要的部分是
HttpOperation
。默认情况下,ServletRequest
包装在一个HttpRewriteWrappedRequest
中
默认的HttpServletRequest
不允许在参数初始化后更改参数。该方法返回一个不可变的映射
HttpRewriteWrappedRequest
的getParameterMap()
也会返回一个不可变的映射。但是getModifiableMap()
显然返回一个可修改的映射
其余的应该不言自明
另见
重写API没有为该问题提供本机解决方案
启动示例
.addRule()
.何时(/*您的状况*/)
.perform(新的HttpOperation(){
@凌驾
public void performHttp(HttpServletRewrite HttpServletRewrite,EvaluationContext EvaluationContext){
//这是默认的包装器
HttpWriteWrappedRequest请求=((HttpWriteWrappedRequest)httpServletRewrite.getRequest());
//获取uri(示例:'/index/p1/p2')
字符串uri=httpServletRewrite.getRequest().getRequestURI();
//斜线分割
String[]split=uri.split(“/”);
//这是具体的例子
//拆分值0为空,拆分值1为页面(例如“索引”)
//对于每个文件夹增量,索引
//对于“/pages/index”,起始索引应为3
对于(int i=2;i
解释 唯一重要的部分是
HttpOperation
。默认情况下,ServletRequest
包装在一个HttpRewriteWrappedRequest
中
默认的HttpServletRequest
不允许在参数初始化后更改参数。该方法返回一个不可变的映射
HttpRewriteWrappedRequest
的getParameterMap()
也会返回一个不可变的映射。但是getModifiableMap()
显然返回一个可修改的映射
其余的应该不言自明
另见
这可能会对您有所帮助:谢谢,但这应该是URL重写规则吗?只是要明确一点:您希望使用动态参数数将
/page/p1/p2/p3/…
重写到page/portal/mypage.jsf?p1=?&p2=?&p3=?&…
。。。。那我该怎么调整规则呢。addRule(Join.path(“/page/{parameter1}”)。to(“/portal/mypage.jsf”)。withInboundCorrection())这可能会对您有所帮助:谢谢,但应该是URL重写规则?只是要明确一点:您想用动态参数数将/page/p1/p2/p3/..
重写为page/portal/mypage.jsf?p1=?&p2=?&p3=?&
?是的,正确。。。。那我该怎么调整规则呢。addRule(Join.path(“/page/{parameter1}”)到(“/portal/mypage.jsf”)。withInboundCorrection())