2017-08-10 108 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> 

:)

相关问题