Jsf 在Ocpsoft重写中,如何将未定义数量的路径参数映射到请求参数?

Jsf 在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 =

目前,我正在尝试以下JSF-Lib:

我有以下问题:

我有一页: /page.jsf

在我的页面中,我有不止一个参数。 例如,我有: -参数1 -参数2

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())