从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¶meter1=" + getParameter1() + "¶meter2="
+ getParameter2() + "¶meter3=" + 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 :(得分:0)
我正在与其他开发者交谈,其中一人告诉我答案。
@ MDD-MSCH:非常感谢你的帮助:)
答案是这样的:
要将数据从a.xhtml
发送到b.xhtml
,您还需要在a.xhtml
的{{1}}中添加数据。
这意味着整个代码都是正确的,但我需要在<f:param>
中添加参数。当我这样做时,我的<f:param>
将如下所示:
a.xhtml
:)