validadores solo numeros formulario etiquetas ejemplo jsf input submit facelets managed-bean

solo - Cómo enviar valores de entrada de formulario e invocar un método en beans JSF



validadores java (1)

Estoy construyendo una aplicación JSF. Definí la GUI e hice las declaraciones selectas consultar la base de datos usando seleccionar.

Ahora debo hacer las instrucciones de inserción, pero no sé cómo leer el value de un componente de entrada JSF como <h:inputText> y enviarlo a mi bean que realiza la inserción.

¿Debería <h:inputText> valor <h:inputText> través de faces-config.xml , para que pueda tenerlo en mi código Java?


Necesita poner todos los componentes <h:inputXxx> en una <h:form> y enlazar su atributo de value a una propiedad bean a través de una expresión EL como #{bean.property} , respaldada por un par getter / setter. Cuando se configura correctamente, JSF establecerá automáticamente los valores en el bean cuando el formulario se <h:commandXxx> través de un componente <h:commandXxx> en la misma forma. Puede especificar un método de acción de bean en el atributo de action del componente <h:commandXxx> través de una expresión EL como #{bean.action} , que apunta a la action() método bare action() . Todos los valores enviados están disponibles de inmediato en la forma habitual de Java.

Dado este ejemplo de formulario JSF con dos campos obligatorios:

<h:form> <h:inputText value="#{bean.text}" required="true" /> <h:inputText value="#{bean.number}" required="true" /> <h:commandButton value="submit" action="#{bean.submit}" /> <h:messages /> <h:outputText value="#{bean.result}" /> </h:form>

El siguiente bean imprime los valores enviados al stdout, lo que demuestra que JSF ya ha establecido los valores mucho antes del momento en que accede en el método de acción.

package com.example; import javax.faces.bean.ManagedBean; import javax.faces.bean.RequestScoped; @ManagedBean @RequestScoped public class Bean { private String text; private Integer number; private String result; public void submit() { result = "Submitted values: " + text + ", " + number; System.out.println(result); } public String getText() { return text; } public void setText(String text) { this.text = text; } public Integer getNumber() { return number; } public void setNumber(Integer number) { this.number = number; } public String getResult() { return result; } }

Eso es todo. Convertir la forma regular en una forma ajax es una cuestión de anidar un <f:ajax> en el componente de comando como se muestra a continuación.

<h:commandButton value="submit" action="#{bean.submit}"> <f:ajax execute="@form" render="@form" /> </h:commandButton>

Puede encontrar otro ejemplo y enlaces valiosos en la parte inferior de nuestra página wiki de JSF .

Tenga en cuenta que lo que sea que pretenda hacer con los valores enviados está más allá de la responsabilidad de JSF. Por ejemplo, manipularlo, pasar a otra clase, guardarlo en la base de datos, etc. Nada de todo esto está relacionado con JSF. Tiene como marco basado en formularios HTML que ya hizo su trabajo de proporcionarle los valores enviados en el sabor de las variables Java utilizables. El resto depende de ti.

Para investigar el próximo paso, en este momento debe hacer como si ya tuviera un montón de variables preparadas / codificadas en lugar de una interfaz de usuario basada en JSF completa. Por ejemplo, para guardar los valores en una base de datos, las personas suelen utilizar un marco de capa de servicios empresariales como EJB, que a su vez utiliza un marco de capa de persistencia como JPA. Algunas personas incluso usan JDBC "plain vanilla" para eso. Para obtener más enlaces a ejemplos concretos, comience aquí: JSF Controller, Service y DAO .