我尝试将参数(甚至是对象)传递给faces流。但是我发现的所有文章都将参数从一个流传递到另一个流。我想从一个启动流程的简单请求中传递参数 我怎样才能做到这一点?什么是最佳做法?
以下是一个示例:
<p:commandLink action="regularDemand">
***<!-- <f:param name="paramName" value="paramValue" /> -->***
<p:panel header="Header" style="height: 300px;">
<p:outputLabel value="Some text." />
</p:panel>
</p:commandLink>
regularDemand
是流的Name
,称为。{/ p>
答案 0 :(得分:0)
我不知道这是否是一种独特的方式,但我是用闪光灯做的。
我有这样的豆:
public class CreateAdBean {
public String createAd(Integer adId) {
if (adId != null) {
FacesContext.getCurrentInstance().getExternalContext().getFlash().put("adId", adId);
}
}
return "adFlow";
}
当我想用参数启动一个流程时,我调用这个bean方法传递参数,将它放在flash中并返回流程名称,在这种情况下,&#34; adFlow&#34;,它启动流程
在第一个流程页面adFlow.xhtml中,我有<f:metadata/>
调用一个使用flash中参数的方法:
<f:metadata>
<f:event type="preRenderView" listener="#{adFlowBean.loadExistingAd()}"/>
</f:metadata>
在流程bean中我做:
public class AdFlowBean {
public void loadExistingAd() {
Integer id = (Integer) FacesContext.getCurrentInstance().getExternalContext().getFlash().get("adId");
if (id != null) {
//do something with the parameter
}
}
}
我希望这有帮助。