2015-05-06 176 views
1

我有我的RewriteConfiguration類JSF頁面使用重寫導航(需要更改導航瀏覽器URL)

@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提交按鈕,在瀏覽器URL它顯示/page1/xyz偶數雖然頁面重定向到page2

的要求是將URL更改爲/page2/xyz

我在faces-config.xml中加入了<redirect/>,但在URL中顯示了page2/view/page2.jsf)的完整路徑。

如何在URL中更改時重定向到下一頁?

回答

1

你的加入看起來很奇怪。您不應該在to()部分使用查詢參數。重寫會自動將所有路徑參數轉換爲查詢參數。

所以不是:

.addRule(Join.path("/page1/{param}").to("/view/page1.jsf?product={param}")) 

你應該嘗試:

.addRule(Join.path("/page1/{product}").to("/view/page1.jsf")) 

現在您的導航應該工作。但請包含重定向元素。這是URL更改所必需的。