Es necesario poner todos los componentes <h:inputXxx>
/<h:selectXxx>
en un <h:form>
y enlazar su atributo value
a una propiedad de bean a través de una expresión EL como #{bean.property}
, respaldado por un par de captador/definidor. Cuando se establece correctamente, JSF establecerá automáticamente los valores en el bean cuando el formulario se envíe a través de un componente <h:commandXxx>
en la misma forma. Puede especificar un método de acción de bean en el atributo action
del componente <h:commandXxx>
a través de una expresión EL como #{bean.action}
, que apunta al método simple action()
. Todos los valores enviados están disponibles de inmediato en la forma habitual de Java.
Dada esta forma JSF ejemplo, con un campo de entrada y un campo de selección:
<h:form>
<h:inputText value="#{bean.text}" required="true" />
<h:selectOneMenu value="#{bean.choice}" required="true">
<f:selectItem itemValue="#{null}" />
<f:selectItem itemValue="One" />
<f:selectItem itemValue="Two" />
<f:selectItem itemValue="Three" />
</h:selectOneMenu>
<h:commandButton value="submit" action="#{bean.submit}" />
<h:messages />
<h:outputText value="#{bean.result}" />
</h:form>
Los siguientes impresiones de frijol los valores enviados a la salida estándar, lo que demuestra que JSF ya ha establecido los valores mucho antes del momento en que el acceso en el método de acción.
package com.example;
import javax.inject.Named;
import javax.enterprice.context.RequestScoped;
@Named // Use @javax.faces.bean.ManagedBean on outdated environments.
@RequestScoped // Use @javax.faces.bean.RequestScoped on outdated environments.
public class Bean {
private String text;
private String choice;
private String result;
public void submit() {
result = "Submitted values: " + text + ", " + choice;
System.out.println(result);
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getChoice() {
return choice;
}
public void setChoice(String choice) {
this.choice = choice;
}
public String getResult() {
return result;
}
}
Eso es todo. Convertir el formulario regular en un formulario 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 valiosos vínculos en la parte inferior de our JSF wiki page.
Tenga en cuenta que cualquier cosa que pretenda hacer con los valores enviados queda fuera 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 siguiente 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 and DAO.
Si suponemos que había una clase de entidad que tiene getters/setters de texto y número, ¿cómo es posible usar esa entidad en lugar de definir los getters/setters de nuevo? – hallaji
@hallaji Continuar el último enlace en la respuesta. – BalusC