0

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>

regularDemandName呼ばれるフローの です。

4

1 に答える 1

0

これが独自の方法かどうかはわかりませんが、フラッシュを使用して行いました。

私はこのような豆を持っています:

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

    return "adFlow";
}

パラメータを使用してフローを開始したい場合は、この Bean メソッドを呼び出してパラメータを渡し、それをフラッシュに入れ、フロー名 (この場合は「adFlow」) を返します。これにより、フローが開始されます。

最初のフロー ページ adFlow.xhtml では<f:metadata/>、フラッシュでパラメーターを使用するメソッドを呼び出しています。

<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 に答える