How to pass parameter to f:ajax in h:inputText? f:param does not work

后端 未结 1 1213
庸人自扰
庸人自扰 2020-12-01 11:32

I need to pass a parameter to the server in my ajax request. Please see the code below. Scope: View Scope

Without f:param



        
相关标签:
1条回答
  • 2020-12-01 11:51

    The <f:param> works in links and buttons only, not in inputs.

    If your environment supports EL 2.2, just pass it as method argument instead:

    <h:inputText ...>
        <f:ajax listener="#{bean.listener(item.id)}" />
    </h:inputText>
    

    public void listener(Long id) {
        // ...
    }
    

    You can also just pass the whole item:

    <h:inputText ...>
        <f:ajax listener="#{bean.listener(item)}" />
    </h:inputText>
    

    public void listener(Item item) {
        // ...
    }
    

    If your environment doesn't or can't support EL 2.2, then evaluate EL programmatically instead.

    public void listener() {
        FacesContext context = FacesContext.getCurrentInstance();
        Long id = context.getApplication().evaluateExpressionGet(context, "#{item.id}", Long.class);
        // ...
    }
    
    0 讨论(0)
提交回复
热议问题