jsf - pass - Pasar el valor del texto de entrada al método bean sin vincular el valor de entrada a la propiedad bean
pass parameters url jsf (2)
Enlace el componente como UIInput
a la vista y use UIInput#getValue()
para pasar su valor como argumento de método.
<h:inputText binding="#{input1}" />
<h:commandButton value="Test" action="#{myBean.execute(input1.value)}" />
con
public void execute(String value) {
// ...
}
Tenga en cuenta que el valor de esta manera ya está convertido y validado de la forma habitual JSF.
Ver también:
¿Puedo pasar un valor de campo de texto de entrada a un método de bean sin vincular el valor a una propiedad de bean?
<h:inputText value="#{myBean.myProperty}" />
<h:commandButton value="Test" action="#{myBean.execute()} />
¿Puedo hacer esto sin guardar temporalmente en #{myBean.myProperty}
?
Puede recuperar los parámetros del formulario obteniendo la Solicitud y utilizando Java EE ServletRequest#getParameter . Cuando use este método, recuerde establecer la identificación y el nombre de sus componentes:
<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>
Manage 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);
}
}
Otro hilo con más información:
- Obtener valores de parámetros de solicitud en JSF