0

次のコードに示すように、ah:selectOneMenu 内の af:param を介して値を渡そうとしました:

<h:selectOneMenu value="#{jbpmAPIUtil.procNdNameSelectedValue}">
                                            <f:selectItem itemLabel="" itemValue="" />
                                            <f:selectItems value="#{jbpmAPIUtil.procnodes}" var="pn"
                                                itemLabel="#{pn.getName()}" itemValue="#{pn.getId()}" />
                                            <f:ajax event="click" listener="#{jbpmAPIUtil.OnONeMenuProcNdSelChgeHndler}" />
                                            <f:param value="${msntoc.getWorkitemid()}" name="msntocwiid"/>                                          
                                        </h:selectOneMenu>

f:param の値を文字列に変更しましたが、ハンドラーでその値を取得しようとすると常に null になります:

public static void OnONeMenuProcNdSelChgeHndler(AjaxBehaviorEvent vce){

        String msntocwiid = FacesContext.getCurrentInstance().getExternalContext()
                .getRequestParameterMap()
                .get("msntocwiid");


        System.out.println("procNdNameSelectedValue : "+procNdNameSelectedValue+" msntocwiid :"+msntocwiid);



    }

selectOneMenu は f:param をサポートしていませんか? 代わりに値を渡す別の方法はありますか?

手伝ってくれてありがとう !

4

1 に答える 1

2

リクエストパラメータを追加する子は、コンポーネント(たとえば、など)<f:param>でのみサポートされます。コンポーネントではサポートされていません。UICommand<h:commandLink><h:commandButton>UIInput

特定のケースでは、とにかく具体的な機能要件を達成するための2つのオプションがあります。

  1. 代わりに、リスナーメソッド引数として渡します。

    <h:selectOneMenu ...>
        ...
        <f:ajax ... listener="#{jbpmAPIUtil.OnONeMenuProcNdSelChgeHndler(msntoc.workitemid)}" />
    </h:selectOneMenu>
    

    public void OnONeMenuProcNdSelChgeHndler(String msntocwiid) {
        // ...
    }
    

  2. AjaxBehaviorEventまたは、不明な理由で本当に手を差し伸べる必要がある場合は、プログラムで評価してください。

    public void OnONeMenuProcNdSelChgeHndler(AjaxBehaviorEvent event) {
        FacesContext context = FacesContext.getCurrentInstance();
        String msntocwiid = context.getApplication().evaluateExpressionGet(context, "#{msntoc.workitemid}", String.class);
        // ...
    }
    

ちなみに、ひどい命名規則があります。あなた自身、あなたの将来のメンテナ、そして私たちをもっと幸せにするために、このテーマに関する公式リソースを読むことを強くお勧めします。

于 2013-03-14T01:25:33.543 に答える