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



我在从a.xhtml重定向到b.xhtml时传递3参数。

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

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

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

答案是这样的:

为了将数据从a.xhtml发送到b.xhtml,还需要在<f:param>中添加a.xhtml中的数据。

这意味着整个代码是正确的,但我需要在<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>

:)

最新更新