Pass input text value to bean method without binding input value to bean property

后端 未结 2 1606
一生所求
一生所求 2020-12-04 21:56

Can I pass a input text field value to a bean method without binding the value to a bean property?




        
相关标签:
2条回答
  • 2020-12-04 22:39

    Bind the component as UIInput to the view and use UIInput#getValue() to pass its value as method argument.

    <h:inputText binding="#{input1}" />
    <h:commandButton value="Test" action="#{myBean.execute(input1.value)}" />
    

    with

    public void execute(String value) {
        // ...
    }
    

    Note that the value is this way already converted and validated the usual JSF way.

    See also:

    • How does the 'binding' attribute work in JSF? When and how should it be used?
    • JSF component binding without bean property
    0 讨论(0)
  • 2020-12-04 22:42

    You can recover the parameters of the form by getting the Request and using plain Java EE ServletRequest#getParameter. When you use this method, remember to set the id and name of your components:

    <h:form id="myForm">
        <h:inputText id="txtProperty" /> <!-- no binding here -->
        <input type="text" id="txtAnotherProperty" name="txtAnotherProperty" />
        <h:commandButton value="Test" action="#{myBean.execute()} /> 
    </h:form>
    

    Managed Bean:

    @ManagedBean
    @RequestScoped
    public class MyBean {
        public void execute() {
            HttpServletRequest request = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
            String txtProperty = request.getParameter("myForm:txtProperty");
            //note the difference when getting the parameter
            String txtAnotherProperty= request.getParameter("txtAnotherProperty");
            //use the value in txtProperty as you want...
            //Note: don't use System.out.println in production, use a logger instead
            System.out.println(txtProperty);
            System.out.println(txtAnotherProperty);
        }
    }
    

    Another thread with more info:

    • Get request parameter values in JSF
    0 讨论(0)
提交回复
热议问题