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

醉酒当歌 提交于 2019-11-27 00:35:53

问题


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

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

Can I do this without doing temporary save in #{myBean.myProperty}?


回答1:


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



回答2:


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


来源:https://stackoverflow.com/questions/11941943/pass-input-text-value-to-bean-method-without-binding-input-value-to-bean-propert

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!