0

我尝试将参数(甚至对象)传递给面流。但是我发现的所有文章都是将参数从一个流传递到另一个流。我想从启动流程的简单请求中传递参数。
我怎样才能做到这一点?什么是最佳实践?

这是一个示例:

<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>

regularDemandName流的,被称为。

4

1 回答 1

0

我不知道这是否是独特的方式,但我是使用 Flash 完成的。

我有一个这样的豆子:

public class CreateAdBean {
    public String createAd(Integer adId) {
        if (adId != null) {
            FacesContext.getCurrentInstance().getExternalContext().getFlash().put("adId", adId);
        }
    }

    return "adFlow";
}

当我想使用参数启动流程时,我调用此 bean 方法传递参数,将其放入 flash 中并返回流程名称,在本例中为“adFlow”,它启动流程。

在第一个流页面 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
         }
    }
}

我希望这会有所帮助。

于 2015-01-25T19:20:17.397 回答