2017-08-10 38 views
0

當從a.xhtml重定向到b.xhtml時,我通過3參數。如何讀取通過JSF從一個頁面重定向到另一個頁面的多個傳遞參數?

對於每個.xhtml頁面,我也有相應的aUiController.java和bUiController.java。

我們假設a.xhtml只包含<p:commandButton>,點擊後重定向到b.xhtml。請參見下面的代碼:

<h:form>  
    <p:commandButton action="#{aUiController.goToPageB()}" value="Go to Page B" /> 
</h:form> 

和控制器看起來是這樣的:

import java.io.Serializable; 

     @Named("aUiController") 
     public class AUiController implements Serializable { 

     private static final long serialVersionUID = 1L; 
     private long parameter1; 
     private int parameter2; 
     private String parameter3; 

     /* 
     * Constructor 
     */ 

     /* 
     * Getters & Setters 
     */ 

     public String goToPageB(){ 
      this.parameter1 = 10; 
      this.parameter2 = 7; 
      this.parameter3 = "Hi!"; 
      return "b?faces-redirect=true&includeViewParams=true&parameter1=" + getParameter1() + "&parameter2=" 
       + getParameter2() + "&parameter3=" + getParameter3(); 
     } 
    } 

b.xhtml我希望收到的數據,即a.xhtml發送給我。在b.xhtml代碼看起來像下面這樣:

<h:head> 
    <f:metadata> 
     <f:viewParam name="parameter1" 
      value="#{bUiController.parameter1}" /> 
     <f:viewParam name="parameter2" 
      value="#{bUiController.parameter2}" /> 
     <f:viewParam name="parameter3" 
      value="#{bUiController.parameter3}" /> 
    </f:metadata> 
</h:head> 
<h:body> 
    <h:form> 
     <p:outputLabel>#{bUiController.parameter1}</p:outputLabel> 
     <p:outputLabel>#{bUiController.parameter2}</p:outputLabel> 
     <p:outputLabel>#{bUiController.parameter3}</p:outputLabel> 
    </h:form> 
</h:body> 

b.xhtml UI控制如下:

import java.io.Serializable; 

    @Named("bUiController") 
    public class BUiController implements Serializable { 
     /** 
     * 
     */ 
     private static final long serialVersionUID = 1L; 
     private long parameter1; 
     private int parameter2; 
     private String parameter3; 

     /* 
     * Constructor 
     */ 

     /* 
     * Getters & Setters 
     */ 
    } 

爲了得到這些參數我使用<f:metadata><f:viewParam>,但不幸的是它不行。

如果您知道如何獲取從JSF讀取的參數,請告訴我。

回答

0

我正在與其他開發人員交談,其中一人告訴我答案。

@ MDD-MSCH:非常感謝您,您的幫助:)

的答案是這樣的:

爲了從a.xhtml數據發送到b.xhtml,你也需要添加數據在a.xhtml<f:param>中。

這意味着整個代碼是正確的,但我需要在<f:param>中添加參數。當我這樣做,我a.xhtml看起來就像這樣:

<h:form> 
    <f:param name="parameter1" value="#{aUiController.parameter1}" /> 
    <f:param name="parameter2" value="#{aUiController.parameter2}" /> 
    <f:param name="parameter3" value="#{aUiController.parameter3}" /> 
    <p:commandButton action="#{aUiController.goToPageB()}" value="Go to Page B" /> 
</h:form> 

:)

相關問題