如何通过JSF读取从一个页面重定向到另一个页面的多个传递参数?

时间:2017-08-10 17:28:11

标签: jsf

3重定向到a.xhtml时,我会传递b.xhtml个参数。

对于每个.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读取参数,请告诉我。

1 个答案:

答案 0 :(得分:0)

我正在与其他开发者交谈,其中一人告诉我答案。

@ MDD-MSCH:非常感谢你的帮助:)

答案是这样的:

要将数据从a.xhtml发送到b.xhtml,您还需要在a.xhtml的{​​{1}}中添加数据。

这意味着整个代码都是正确的,但我需要在<f:param>中添加参数。当我这样做时,我的<f:param>将如下所示:

a.xhtml

:)