将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中获取请求参数值