将input文本值传递给bean方法,而不将input值绑定到bean属性

我可以将一个input文本字段值传递给一个bean方法,而不需要将该值绑定到一个bean属性上?

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

我可以这样做,而不是暂时保存在#{myBean.myProperty}

将组件作为UIInput绑定到视图,并使用UIInput#getValue()将其值作为方法parameter passing。

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

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

请注意,这个值已经被转换和validation了通常的JSF方式。

也可以看看:

  • “绑定”属性在JSF中如何工作? 何时以及如何使用?
  • 没有bean属性的JSF组件绑定

您可以通过获取请求并使用纯Java EE ServletRequest#getParameter来恢复表单的参数。 当你使用这个方法时,记得设置你的组件的ID和名称:

 <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> 

托pipeBean:

 @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); } } 

另一个线程更多的信息:

  • 在JSF中获取请求参数值