我有我的RewriteConfiguration类
@RewriteConfiguration
public class ApplicationConfigurationProvider extends HttpConfigurationProvider {
@Override
public int priority() {
return 0;
}
@Override
/**
* map URL with resource
*/
public Configuration getConfiguration(ServletContext context) {
return ConfigurationBuilder.begin()
.addRule(Join.path("/page1/{param}").to("/view/page1.jsf?product={param}"))
.addRule(Join.path("/page2/{param}").to("/view/page2.jsf?product={param}"))
;
}
}
我的managedBean
@Named("myBean")
@javax.enterprise.context.RequestScoped
public class PageManagedBean {
...
public String success(){
return "success";
}
...
}
在我的page1.xhtml中,我的提交按钮代码是
<h:commandButton action="#{myBean.success()}" id="nextButton" value="NEXT" >
<f:param name="product" value="#{param.product}"></f:param>
</h:commandButton>
我在faces-config.xml中的导航规则是
<navigation-rule>
<from-view-id>/view/page1.xhtml</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/view/page2.jsf</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/error-500</to-view-id>
</navigation-case>
</navigation-rule>
问题是:
当我点击page1
上的提交按钮后,在浏览器网址中,即使页面被重定向到/page1/xyz
page2
要求是将网址更改为/page2/xyz
。
我在<redirect/>
中添加了faces-config.xml
,但在网址中显示了page2
(/view/page2.jsf
)的完整路径。
如何通过更改网址重定向到下一页?
答案 0 :(得分:1)
你的加入看起来很奇怪。您不应在to()
部分中使用查询参数。重写会自动将所有路径参数转换为查询参数。
所以而不是:
.addRule(Join.path("/page1/{param}").to("/view/page1.jsf?product={param}"))
你应该尝试:
.addRule(Join.path("/page1/{product}").to("/view/page1.jsf"))
现在您的导航应该有效。但请包含重定向元素。这需要更改URL。