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 的值更改为 String 但在尝试在处理程序中获取该值时总是得到 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 回答