SimpleFormControler Spring

Controlador de Formulario Simple o SimpleFormControler

Para hacer frente a los formularios en Spring de lo que necesita para ampliar su clase de controlador clase SimpleFormController. Aquí vamos a crear un formulario de registro de usuarios para entender cómo funciona esto. El SimpleFormController es obsoleta desde Spring 3.0 así que si usted está usando Spring 3.0 o superior utilice los controladores de anotaciones en su lugar.

Estructura del Proyecto:

Primero crearemos tres paquetes diferentes uno con el dominio otro con el servicio y otro con el web.

En el web tendremos nuestro controlador UserController:

package com.amalakaky.web;

import org.springframework.web.servlet.ModelAndView;

import org.springframework.web.servlet.mvc.SimpleFormController;

import com.amalakaky.dominio.User;

import com.amalakaky.servicio.UserService;

@SuppressWarnings(“deprecation”)

public
class UserController extends
SimpleFormController {

    private UserService userService;

    public UserController()    {

        setCommandClass(User.class);

        setCommandName(“user”);

    }

    

    public
void setUserService(UserService userService) {

        this.userService = userService;

    }

    @Override

    protected
ModelAndView onSubmit(Object command) throws Exception {

        User user = (User) command;

        userService.add(user);

        return
new ModelAndView(“userSuccess”,“user”,user);

    }

    

}

Estoy usando Spring 3.0 para que veas las anotaciones SuppressWarnings. Aquí se extiende el UserController de SimpleFormController, esto hace que la clase del controlador capaz de manejar los formularios. Por lo general, un formulario estará asociado a un objeto de dominio particular, en nuestro caso es el la clase Usuario. En Spring este objeto de dominio se denomina objeto de comando por defecto. Para hacer referencia el objeto de comando en la página jsp es necesario establecer la clase de comandos mediante el constructor setCommandClass (). Digamos que la clase de usuario tiene una propiedad de nombre, y remitir está en la página jsp que va a utilizar “command.name”. También puede cambiar este nombre mediante el método setCommandName (). Aquí ponemos el nombre de usuario, por lo que para acceder al nombre del usuario en la página jsp que utilizamos”usuario.name “.

Usted necesita tener un método para controlar la forma cuando se envía el formulario, aquí el método onSubmit () se utiliza para este propósito. El onSubmit () tiene acceso al objeto de comando, lo primero que encasillar el objeto de comando para el usuario (nuestro objeto de dominio) y luego para registrar al usuario que llame a la
método add () de la clase de servicio y, finalmente, devolver el objeto ModelAndView.

Todos los valores de los campo de formulario se presentará como cadenas en el controlador de formulario. Spring tiene varios editores antes de propiedad registrados para convertir los valores de cadena en tipos de datos comunes. En el Caso que usted tenga un tipo de datos personalizado que necesite para crear un editor personalizado para su manejo.
El objeto de dominio de Usuario tiene los siguientes atributos.

package com.amalakaky.dominio;

public
class Usuario {

    private String nombre;

    private String password;

    private String genero;

    private String pais;

    private String sobreUsted;

    private String[] comunidad;

    private Boolean listaDeCorreo;

    

    public String getNombre() {

        return
nombre;

    }

    public String getPassword() {

        return
password;

    }

    public String getGenero() {

        return
genero;

    }

    public String getPais() {

        return
pais;

    }

    public String getSobreUsted() {

        return
sobreUsted;

    }

    public String[] getComunidad() {

        return
comunidad;

    }

    public Boolean getListaDeCorreo() {

        return
listaDeCorreo;

    }

    public
void setNombre(String nombre) {

        this.nombre = nombre;

    }

    public
void setPassword(String password) {

        this.password = password;

    }

    public
void setGenero(String genero) {

        this.genero = genero;

    }

    public
void setPais(String pais) {

        this.pais = pais;

    }

    public
void setSobreUsted(String sobreUsted) {

        this.sobreUsted = sobreUsted;

    }

    public
void setComunidad(String[] comunidad) {

        this.comunidad = comunidad;

    }

    public
void setListaDeCorreo(Boolean listaDeCorreo) {

        this.listaDeCorreo = listaDeCorreo;

    }

    

}

Nuestra interfaz de UsuarioService.

package com.amalakaky.servicio;

import com.amalakaky.dominio.Usuario;

public
interface UsuarioService {

    public
void add(Usuario usuario);

}

Nuestra implementación de la clase UsuarioServiceImpl.

package com.amalakaky.servicio;

import com.amalakaky.dominio.Usuario;

public
class UsuarioServiceImpl implements UsuarioService {

    @Override

    public
void add(Usuario usuario) {

        

        System.out.println(“Usuario añadido correctamente”);

    }

}

Vamos a crear ahora la forma de registro de usuario utilizando las etiquetas de formulario de Spring. Para utilizar las etiquetas de formulario debe importar primero la biblioteca de Spring form tag.

<%@
page
language=“java”
contentType=“text/html; charset=ISO-8859-1”

    pageEncoding=“ISO-8859-1”%>

<%@
taglib
uri=http://www.springframework.org/tags/form&#8221;
prefix=“form”%>

<!DOCTYPE html
PUBLIC
“-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/html4/loose.dtd&#8221;>

<html>

<head>

<meta
http-equiv=“Content-Type”
content=“text/html; charset=ISO-8859-1”>

<title>Pagina de Registro</title>

</head>

<body>

<form:form
method=“POST”
commandName=“usuario”>

    <table>

        <tr>

            <td>Nombre Usuario :</td>

            <td><form:input
path=“nombre”
/></td>

        </tr>

        <tr>

            <td>Password :</td>

            <td><form:password
path=“password”
/></td>

        </tr>

        <tr>

            <td>Genero :</td>

            <td><form:radiobutton
path=“genero”
value=“M”
label=“M”
/>

                <form:radiobutton
path=“genero”
value=“F”
label=“F”
/></td>

        </tr>

        <tr>

            <td>Pais :</td>

            <td><form:select
path=“pais”>

                <form:option
value=“0”
label=“Select”
/>

                <form:option
value=“1”
label=“España”
/>

                <form:option
value=“2”
label=“USA”
/>

                <form:option
value=“3”
label=“UK”
/>

            </form:select></td>

        </tr>

        <tr>

            <td>Sobre usted :</td>

            <td><form:textarea
path=“sobreUsted”
/></td>

        </tr>

        <tr>

            <td>Comunidad :</td>

            <td><form:checkbox
path=“comunidad”
value=“Spring”

                label=“Spring”
/>
<form:checkbox
path=“comunidad”
value=“Hibernate”

                label=“Hibernate”
/>
<form:checkbox
path=“comunidad”
value=“Struts”

                label=“Struts”
/></td>

        </tr>

        <tr>

            <td></td>

            <td><form:checkbox
path=“listaDeCorreo”

                label=“¿Te gustaría formar parte de nuestra lista de correo?”
/></td>

        </tr>

        <tr>

            <td
colspan=“2”><input
type=“submit”></td>

        </tr>

    </table>

</form:form>

</body>

</html>

Aquí, el atributo de ruta se utiliza para enlazar los campos del formulario con el objeto de dominio. Aquí se utiliza el método HTTP POST para enviar el formulario. A fin de para obligar a los campos del formulario con el objeto de dominio con éxito el objeto de comando debe estar en el mismo nombre en la página jsp y la clase del controlador. Para establecer el nombre del objeto de comando en la página jsp, utilice el atributo de la etiqueta de formulario.

El archivo web.xml.

<?xml
version=“1.0”
encoding=“UTF-8”?>

<web-app
id=“WebApp_ID”
version=“2.4”
xmlns=http://java.sun.com/xml/ns/javaee&#8221;
xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&#8221;
xsi:schemaLocation=http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd&#8221;>

    <display-name>SimpleFormControler</display-name>

     <servlet>


<servlet-name>dispatcher</servlet-name>


<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>


<load-on-startup>1</load-on-startup>


</servlet>


<servlet-mapping>


<servlet-name>dispatcher</servlet-name>


<url-pattern>*.htm</url-pattern>


</servlet-mapping>


<welcome-file-list>


<welcome-file>redirect.jsp</welcome-file>


</welcome-file-list>

</web-app>

A continuación, cree el bean de configuración de Spring.

<?xml
version=“1.0”
encoding=“UTF-8”?>

<beans
xmlns=http://www.springframework.org/schema/beans&#8221;

    xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&#8221;
xmlns:p=http://www.springframework.org/schema/p&#8221;

    xsi:schemaLocation=http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&#8221;>

    <bean
id=“viewResolver”

        class=“org.springframework.web.servlet.view.InternalResourceViewResolver”

        p:prefix=“/WEB-INF/jsp/”
p:suffix=“.jsp”
/>

    <bean
id=“usuarioService”
class=“com.amalakaky.servicio.UsuarioServiceImpl”
/>

    <bean
name=“/userRegistration.htm”
class=“com.amalakaky.web.UsuarioController”

        p:userService-ref=“usuarioService”
p:formView=“userForm”

        p:successView=“userSuccess”
/>

</beans>

Como puedes ver, usamos la “p” espacio de nombres aquí. La “p” espacio de nombres es simple y fácil de usar. Uso de “p” espacio de nombres de las propiedades se pueden suministrar con los atributos, en lugar de elementos.

Para la inyección de los tipos simples que utilizar el nombre de la propiedad en la “p” espacio de nombres y para inyectar referencias que añadir “-ref” sufijo a la misma. Por ejemplo, usamos t: FormView para la inyección de la propiedad de vista la forma y el p: UserService-ref para inyectar el servicio al usuario.
Durante la solicitud HTTP GET al FormView se representará. Cuando se envía el formulario (en la solicitud HTTP POST) de la onSubmit
() de la clase UsuarioController se llamará, en la ejecución correcta del método de la successView se representará. En la situación de los errores de conversión de tipo o errores de validación de la FormView se mostrará automáticamente el usuario.

Ejecutar el ejemplo ejecutando el archivo redirect.jsp. El archivo redirect.jsp, redirigir la solicitud a “userRegistration.htm”.

El método onSubmit () de la clase UsuarioController será llamado y el control será transferido a la vista “userSuccess“. Usamos InternalResourceViewResolver aquí, así que la página se userSuccess.jsp se muestra. En la página userSuccess.jsp que representará a los datos de los usuarios que utilizan las etiquetas JSTL.

Página UserForm.jsp

<%@
page
language=“java”
contentType=“text/html; charset=ISO-8859-1”

    pageEncoding=“ISO-8859-1”%>

<%@
taglib
uri=http://www.springframework.org/tags/form&#8221;
prefix=“form”%>

<!DOCTYPE html
PUBLIC
“-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/html4/loose.dtd&#8221;>

<html>

<head>

<meta
http-equiv=“Content-Type”
content=“text/html; charset=ISO-8859-1”>

<title>Pagina de Registro</title>

</head>

<body>

<form:form
method=“POST”
commandName=“usuario”>

    <table>

        <tr>

            <td>Nombre Usuario :</td>

            <td><form:input
path=“nombre”
/></td>

        </tr>

        <tr>

            <td>Password :</td>

            <td><form:password
path=“password”
/></td>

        </tr>

        <tr>

            <td>Genero :</td>

            <td><form:radiobutton
path=“genero”
value=“M”
label=“M”
/>

                <form:radiobutton
path=“genero”
value=“F”
label=“F”
/></td>

        </tr>

        <tr>

            <td>Pais :</td>

            <td><form:select
path=“pais”>

                <form:option
value=“0”
label=“Select”
/>

                <form:option
value=“1”
label=“España”
/>

                <form:option
value=“2”
label=“USA”
/>

                <form:option
value=“3”
label=“UK”
/>

            </form:select></td>

        </tr>

        <tr>

            <td>Sobre usted :</td>

            <td><form:textarea
path=“sobreUsted”
/></td>

        </tr>

        <tr>

            <td>Comunidad :</td>

            <td><form:checkbox
path=“comunidad”
value=“Spring”

                label=“Spring”
/>
<form:checkbox
path=“comunidad”
value=“Hibernate”

                label=“Hibernate”
/>
<form:checkbox
path=“comunidad”
value=“Struts”

                label=“Struts”
/></td>

        </tr>

        <tr>

            <td></td>

            <td><form:checkbox
path=“listaDeCorreo”

                label=“¿Te gustaría formar parte de nuestra lista de correo?”
/></td>

        </tr>

        <tr>

            <td
colspan=“2”><input
type=“submit”></td>

        </tr>

    </table>

</form:form>

</body>

</html>

Página userSuccess.jsp

<%@
page
language=“java”
contentType=“text/html; charset=ISO-8859-1”


pageEncoding=“ISO-8859-1”%>

<!DOCTYPE html
PUBLIC
“-//W3C//DTD HTML 4.01 Transitional//EN”
http://www.w3.org/TR/html4/loose.dtd&#8221;>

<html>

<head>

<meta
http-equiv=“Content-Type”
content=“text/html; charset=ISO-8859-1”>

<title>Registro Correcto</title>

</head>

<body>

Detalles de Usuario

<hr>

Nombre Usuario : ${usuario.nombre} <br/>

Genero : ${usuario.genero} <br/>

Pais          : ${usuario.pais} <br/>

Sobre Usted : ${usuario.sobreUsted} <br/>

Comunidad      : ${usuario.comunidad[0]} ${usuario.comunidad[1]} ${usuario.comunidad[2]}<br/>

Lista de Correos : ${usuario.listaDeCorreo}

</body>

</html>

El resultado sería el siguiente:

Anuncios
Minientrada | Esta entrada fue publicada en Spring. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s