Cómo enviar el formulario de valores de entrada y la invocación de un método en JSF bean

Estoy construyendo una aplicación JSF. He definido la interfaz gráfica de usuario y se hicieron las instrucciones select de la consulta de la base de datos el uso de select.

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

Debe <h:inputText> valor se asigna a través de faces-config.xml, para que yo pueda tener en mi código de Java?

OriginalEl autor Mircea | 2010-09-09

1 Kommentar

  1. 22

    Debes poner todos los <h:inputXxx>/<h:selectXxx> componentes en un <h:form> y se unen sus value atributo para un bean de la propiedad a través de una expresión EL como #{bean.property}, respaldado por un getter/setter par. Cuando se configura correctamente, JSF se establece automáticamente los valores en el bean cuando el formulario es enviado a través de un <h:commandXxx> componente en la misma forma. Usted puede especificar un bean método de acción en action atributo de la <h:commandXxx> componente a través de una expresión EL como #{bean.action}, que apunta a la desnuda método action(). Todos los valores enviados están disponibles de inmediato de ahí la costumbre de Java.

    Dado este JSF ejemplo de formulario 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>

    La siguiente bean imprime los valores enviados a la salida estándar (stdout), demostrando que JSF ya ha establecido los valores mucho antes de que en el momento en que se acceda a él 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. Girando la forma regular en un formulario ajax es una cuestión de anidación de una <f:ajax> en el componente comando como el siguiente.

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

    Usted puede encontrar otro ejemplo y valiosos enlaces en la parte inferior de nuestro JSF página de la wiki.

    Hay que hacer notar que lo que se pretende hacer con los valores enviados está más allá de la responsabilidad de JSF. Por ejemplo, la manipulación, pasando a otra clase, guardarlos en la base de datos, etc. Nada de todo esto está relacionado con JSF. Tiene como un formulario HTML marco basado en el ya hizo su trabajo, de la prestación de los valores enviados en sabor utilizable de Java variables. El resto depende de usted.

    Para investigar el siguiente paso, en este punto sólo estar haciendo como si ya tienes un montón de preparado /codificados de las variables en lugar de un conjunto de JSF basado en la interfaz de usuario. Por ejemplo, con el fin de salvar a los valores en una base de datos, se suele utilizar una capa de servicio de negocios marco como EJB que a su vez utiliza una capa de persistencia marco como JPA. Algunas personas incluso el uso de «plain vanilla» JDBC para que. Para obtener más enlaces a ejemplos concretos, comience aquí: JSF Controlador, el Servicio y el DAO.

    Si asumimos que hay una clase de entidad que contiene texto y el número de getters/setters, ¿cómo es posible el uso de esa entidad en lugar de definir los getters/setters de nuevo?
    Continuar con el último eslabón en la respuesta.

    OriginalEl autor BalusC

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea