Sie sind auf Seite 1von 16

1

Manual de Generador de
Formularios de Template Saga






www.sagasoluciones.com
info@sagasoluciones.com
C/ Salado 11 Local 10. 41010 Sevilla
T. + 34 954 45 72 75
F. + 34 954 45 75 72
Manual de Generador de Formularios

2
SAGA Soluciones Tecnolgicas
CONTROL DEL DOCUMENTO

Realizado
28/09/2010
Sergio Raposo Vargas
Director Tcnico

Revisado



Control de Modificaciones
Revisin Fecha Autor/res Descripcin
N 1 28/09/2010 Sergio Raposo Vargas Redaccin inicial


Manual de Generador de Formularios

3
SAGA Soluciones Tecnolgicas

ndice de Contenido
1. INTRODUCCIN ............................................................................................................. 4
2. ANOTACIONES ............................................................................................................. 5
2.1. ATRIBUTOS COMUNES ___________________________________________________ 5
2.2. INPUTTEXT ___________________________________________________________ 5
2.3. PASSWORDTEXT _______________________________________________________ 6
2.4. HIDDEN ______________________________________________________________ 6
2.5. TEXTAREA ___________________________________________________________ 6
2.6. SELECT ______________________________________________________________ 7
2.7. RADIO _______________________________________________________________ 7
2.8. CHECKBOX ___________________________________________________________ 8
2.9. SIMPLECHECKBOX _____________________________________________________ 8
2.10. WYSIWYG ____________________________________________________________ 8
2.11. FILE ________________________________________________________________ 9
2.12. CALENDAR __________________________________________________________ 10
2.13. AUTOCOMPLETEINPUTTEXT ______________________________________________ 11
3. CLASES JAVA IMPLICADAS ...........................................................................................12
3.1. CREACIN DEL BEAN ___________________________________________________ 12
3.2. CLASE FORMGENERATOR _______________________________________________ 12
3.1. CLASE PERSONALIZADA _________________________________________________ 12
3.2. PRINTFORM _________________________________________________________ 14
4. NUESTRA JSP ..............................................................................................................15

Manual de Generador de Formularios

4
SAGA Soluciones Tecnolgicas

1. Introduccin
El generador de formulario es un mdulo adicional de Template Saga que se planteo para resolver
el problema de los formularios a medida que, segn las necesidades del cliente, era necesario
realizar en nuestros proyectos.
Con el tiempo, el desarrollo de un formulario a medida implicaba un trabajo bastante repetitivo
que consista en:
- Crear la jsp que mostrara el formulario y que se recargara automticamente con los valores
para la edicin del recurso.
- Validar los valores introducidos y mostrar los errores de validacin en el formulario.
- Recoger los datos enviados y guardarlos en un objeto bean para su posterior tratamiento.
- Aadir la funcionalidad al formulario necesaria en cada caso.
Una vez el formulario estaba hecho haba una funcin de mantenimiento que era bastante costosa
ya que aadir o borrar un campo del formulario implicaba tocar en demasiados sitios y muchas
veces provocaba que este proceso fuera lento y a veces derivaba en errores en la aplicacin.
Por todo esto se planteo la opcin de desarrollar un mdulo que nos permitiera generar de una
forma simple y rpida formularios a medida y que el trabajo repetitivo nos lo evitsemos, haciendo
que el mantenimiento fuera tambin mucho ms rpido.
Para ello se planteo la opcin de usar anotaciones de java (caracterstica disponible desde java 5).
Para ello se generaron una serie de anotaciones que, colocadas en los atributos de una Clase Bean
nos permitiera generar automticamente el formulario, y que este mismo objeto se rellenara
automticamente al enviarse el formulario. Con este mdulo, la creacin de un formulario pasaba
por:
- Definir la clase Bean y aplicarle las anotaciones correspondientes a cada atributo.
- Definir una clase principal la cual nos permitir implementar la funcionalidad y la validacin
de los campos.
Manual de Generador de Formularios

5
SAGA Soluciones Tecnolgicas
2. Anotaciones
2.1. Atributos comunes
Existen una serie de atributos comunes a todas las anotaciones que son:
- label: Este campo establecer la etiqueta de nuestro campo. Se puede definir una key del
fichero de idiomas. El sistema en primer lugar comprobar si existe una key con el valor
indicado, en caso contrario se mostrar directamente el valor. Este campo es obligatorio.
- mandatory: (true-false) Indicar si el campo se marcar como obligatorio o no, es decir, si
le marcar el * al lado del label del campo indicndole al usuario que es obligatorio. Este
campo no es obligatorio.
- help: Este campo har que se muestre un icono de ayuda contextual al lado del label del
campo. Al igual que el label, en primer lugar buscar si existe una key en el fichero de
idiomas con el valor indicado, en caso contrario mostrar el valor directamente. Este
campo no es obligatorio.
- getFieldSet: Este atributo nos agrupar dentro de un mismo fieldset todos los atributos
que tenga el mismo valor configurado. El ttulo del fieldset ser obtenido del fichero de
idiomas aplicando el valor como key o el mismo valor si no existe dicha key. Es necesario
que todos los campos que tengan que estar dentro del mismo fieldset estn juntos. Este
campo no es obligatorio.
- readOnly: este atributo establecer si el campo ser de solo lectura o si podremos escribir
en l. No es obligatorio y por defecto ser un campo editable.
En la definicin de las anotaciones ignoraremos estos atributos y nos centraremos en los que
difieren del resto.
2.2. InputText
Esta anotacin crear un recurso de tipo input type=text.
Dispone de la siguiente configuracin personalizada:
- multiple: Si se marca como true esta campo se marcar como un campo mltiple, es decir,
dispondremos de botones + y para crear y borrar elementos. Por defecto este atributo es
false y no es obligatorio.
- urlValidationAjax: Este atributo lo usaremos cuando queramos validar un campo mediante
ajax. Por ejemplo, en un formulario de registro puede ser til para indicar si un nombre de
usuario est ocupado, o si una contrasea no pasa los niveles de seguridad exigidos. El
valor del atributo debe ser la url a la que se le llamar por ajax para la validacin de la
informacin. Los parmetros enviados sern:
o action = validationajax
o field = nombre del campo
o value = valor introducido en el campo
Manual de Generador de Formularios

6
SAGA Soluciones Tecnolgicas
La url a la que llama debe estar preparada para devolver un objeto json con 2 campos
- ok: ser true si la validacin es correcta y false en caso contrario
- msg: contendr el mensaje a mostrar independiente de que la validacin sea
correcta o no.
Ejemplo:
@InputText(mandatory=true,label="registroinstalador.email",
help="registroinstalador.email", urlValidationAjax="ajaxValidator.html")
private String email;
2.3. PasswordText
Esta anotacin crear un recurso de tipo input type=password.
Ejemplo:
@PasswordText(mandatory=true,label="registroinstalador.password",
help="registroinstalador.password")
private String password;
2.4. Hidden
En este caso, usaremos la anotacin Hidden para crear un campo oculto: input type=hidden
Esta anotacin no tiene configuracin adicional ya que no es necesario. Lo podremos usar para
asignarle valores mediante javascript, o por defecto dndoselo en el constructor por defecto.
Ejemplo
@Hidden()
private String codigopostal;
2.5. TextArea
La anotacin TextArea nos crear en nuestro formulario un campo de tipo textArea. La
configuracin que se le pueda aplicar es:
- cols: atributo en el que se le indicar el nmero de columnas del textArea. Por defecto
ser 50
- rows: atributo en el que se le indicar el nmero de filas que tendr el textArea. Por
defecto ser 8.
Ejemplo:
Manual de Generador de Formularios

7
SAGA Soluciones Tecnolgicas
@TextArea(label="registroinstalador.descripcionempresa", rows=10, cols=80,
help="registroinstalador.descripcionempresa")
private String descripcionEmpresa;
2.6. Select
La anotacin Select generar un desplegable en nuestro formulario el cual nos permitir
seleccionar entre varias opciones. La configuracin adicional que posee este campo es:
- method: en este atributo hay que indicar el nombre del mtodo que generar la lista de
opciones que tendremos disponibles. Este mtodo deber devolver un objeto de tipo Map
con los valores de la lista. La clave del map ser el valor del campo option y el valor ser la
etiqueta del option. Ej: data.put(opcion1,Opcin 1 que se ve) -> <option
value=opcion1>Opcion 1 que se ve</option>.
Ejemplo:
@Select(mandatory=true,label="registroinstalador.comunidad",
help="registroinstalador.comunidad",method="getComunidades")
private String comunidad;

public HashMap<String, String> getComunidades(){
HashMap<String,String> data = new HashMap<String,String>();
data.put("sevilla","Sevilla");
data.put("huelva","Huelva");
data.put("cadiz","Cdiz");
return data;
}
2.7. Radio
La anotacin Radio generar un campo de tipo radiobutton en nuestro formulario el cual nos
permitir seleccionar una opcin de entra una lista de opciones. La configuracin adicional que
posee este campo es:
- method: en este atributo hay que indicar el nombre del mtodo que generar la lista de
opciones que tendremos disponibles. Este mtodo deber devolver un objeto de tipo Map
con los valores de la lista. La clave del map ser el valor del campo option y el valor ser la
etiqueta del option. Ej: data.put(opcion1,Opcin 1 que se ve) -> <option
value=opcion1>Opcion 1 que se ve</option>.
Ejemplo:
@Radio(mandatory=true,label="registrousuariofinal.tratamiento", method =
"getOpcionesTratamiento", help="registrousuariofinal.tratamiento")
private String tratamiento;

public HashMap<String, String> getOpcionesTratamiento(){
HashMap<String,String> data = new HashMap<String,String>();
data.put("sr",SR.);
Manual de Generador de Formularios

8
SAGA Soluciones Tecnolgicas
data.put("sra",Sra.);
return data;
}
2.8. CheckBox
La anotacin CheckBox generar un campo de tipo checkbox en nuestro formulario el cual nos
permitir seleccionar una o varias opciones de entra una lista de opciones. La configuracin
adicional que posee este campo es:
- method: en este atributo hay que indicar el nombre del mtodo que generar la lista de
opciones que tendremos disponibles. Este mtodo deber devolver un objeto de tipo Map
con los valores de la lista. La clave del map ser el valor del campo option y el valor ser la
etiqueta del option. Ej: data.put(opcion1,Opcin 1 que se ve) -> <option
value=opcion1>Opcion 1 que se ve</option>.
Ejemplo:
@CheckBox(mandatory=true,label="registroinstalador.actividad", method =
"getActividades", help="registroinstalador.actividad")
private List<String> actividad;

public HashMap<String, String> getActividades (){
HashMap<String,String> data = new HashMap<String,String>();
data.put("a1",Actividad 1);
data.put("a2",Actividad 2);
return data;
}
2.9. SimpleCheckBox
En el caso del SimpleCheckBox, a diferencia del CheckBox, tan solo mostraremos una opcin, es
decir, se plantear una casilla y el usuario podr activar o desactivarla. Este tipo de campo es til
para el caso que tengamos un campo booleano, es decir, tan solo admita valores true o false. Por
ejemplo lo podemos usar para las casillas de validacin de licencias o condiciones de uso muy
comunes en los formularios de envo de informacin personal.
En este caso no hay configuracin adicional.
Ejemplo:
@SimpleCheckBox(label="registrousuariofinal.avisolopd",
help="registrousuariofinal.avisolopd")
private Boolean avisoLOPD;
2.10. Wysiwyg
Manual de Generador de Formularios

9
SAGA Soluciones Tecnolgicas
La anotacin Wysiwyg nos crear un campo de edicin de texto enriquecido basado en FCKEditor.
Este campo es configurable mediante los siguientes atributos:
toolBar: En este atributo configuraremos las herramientas disponibles que se mostrarn en
el editor. Por defecto tomar el valor Tipico. Los posibles valores son:
o Default: Aade todas las herramientas ms comunes del FCKEditor, incluido las
galeras de OpenCms.
o Intermedio: Aade las herramientas ms comunes que un usuario editor necesita
para editar su texto a medida. No muestra las herramientas propias de OpenCms
o Tipico: Mantiene todas las herramientas de edicin de contenidos que pueden ser
necesaria quitando las que ms pueden afectar al diseo de una web como el
selector de colores y otras herramientas parecidas.
o Normal: Deja un editor con las herramientas ms normales que se usan en la
edicin de texto simple.
o Basic: Deja un editor bsico en el que apenas se disponen de herramientas para la
edicin del texto.
o Otros: Para aadir nuevas configuraciones hay que editar el fichero
/system/workplace/resources/editors/fckeditor/fckconfig.js y agregar la
configuracin que se desee.
skin: El skin nos permite cambiar la apariencia del editor. Por defecto toma el valor
office2003. Los posibles valores son:
o default: usa el skin por defecto de FCKEditor
o office2003: usa un skin parecido al que podemos ver en el Office 2003
o opencms: aplica el estilo de los editores internos de OpenCms
o silver: Aplica un estilo particular con colores plateados.
cols: Indica el nmero de columnas que tendr la zona de edicin. Por defecto ser 50.
rows: Indica el nmero de filas que tendr el editor. Por defecto ser 8.
Ejemplo:
@Wisywyg(toolBar="Normal", skin=default, label="noticia.descripcion",
help="noticia.descripcion",mandatory=true)
private String descripcion;

2.11. File
Esta anotacin crea un campo de subida de ficheros en nuestro formulario. El botn de subida es el
correspondiente al input type=file, y muestra el clsico botn de examinar. Esta anotacin tiene
una serie de atributos de configuracin que nos permiten personalizar el campo que son:
attrPath: Este atributo lo usaremos cuando el formulario se va a usar para la edicin de un
contenido, por ejemplo, cuando el campo de subida se refiere a una imagen y estamos
editando, nos ayudar a mostrar la imagen que actualmente est subida. En este caso, si es
una imagen (extensiones gif, png y jpg) se muestra la imagen, y si es un fichero se mostrar
un enlace a la descarga del mismo. Por lo tanto, este campo deber apuntar a otro campo
Manual de Generador de Formularios

10
SAGA Soluciones Tecnolgicas
del formulario en el cual guardaremos el path. Lo normal es que el campo al que apunte
sea un campo hidden y que en el constructor de la clase se le de el valor correspondiente.
attrUuid: El uso es similar al attrPath, pero en lugar de guardar la ruta del recurso,
guardaremos el uuid. El resto del funcionamiento es el mismo.
attrConservar: Este campo pintar en el formulario, siempre que el campo no sea
obligatorio, una opcin de conservar fichero adjunto o no. Para entender este campo
debemos pensar en un formulario de edicin de contenido, por ejemplo, en el caso de
editar una noticia que por cualquier motivo el usuario desea borrar la imagen subida con
anterioridad y no subir una imagen nueva. En este caso, se le presenta una casilla en la que
el usuario podr marcar como no conservar en cucho caso se borrara el fichero del
formulario. Para qu funcione correctamente tendremos que asignarle un valor al campo
donde se guardar la eleccin del usuario. En ese caso, a la hora de recoger la informacin
y aadir la funcionalidad al mismo, habr que leer este campo para saber si debemos
mantener o borrar el archivo adjunto.
Ejemplos:
@File(label="noticia.image",mandatory=true, attrPath="pathImage")
private FileItem image;
@Hidden(label="pathImage")
private String pathImage;

@File(label="noticia.documento", help="noticia.documento ",
attrUuid="uuidDocumento")
private FileItem documento;
@Hidden(label="uuidDocumento")
private String uuidDocumento;
2.12. Calendar
La anotacin Calendar nos permite crear campos en nuestro formulario para la seleccin de fechas.
Usa el componente javascript jscalendar. En este caso podremos configurar el estilo del formulario
aplicndole una css u otra mediante el atributo css. Por defecto tomar el valor calendar-blue. Los
posibles valores son:
calendar-blue
calendar-brown
calendar-green
calendar-opencms
calendar-system
calendar-tas
calendar-win2k-1
calendar-win2k-2
calendar-win2k-cold-1
calendar-win2k-cold-2
Ejemplo:
Manual de Generador de Formularios

11
SAGA Soluciones Tecnolgicas
@Calendar(label="noticia.fecha",mandatory=true)
private String fecha;
2.13. AutocompleteInputText
El autocomplete es un campo similar al inputText con la nica diferencia que al escribir sobre el
campo aparecern una lista con valores candidatos. Por ejemplo, podemos aplicarle este campo a
un campo de insercin de un cdigo postal, de forma que conforme el usuario teclee un valor se le
muestre las opciones candidatas al valor introducido. Para que funcione este campo es necesario
implementar una pgina aparte donde se procede a realizar la consulta y a mostrar los posibles
valores candidatos. En el caso de nuestro ejemplo haremos una consulta a la BBDD para extraer
todos los cdigos postales que empiezan por los valores introducidos. Para implementar esta
opcin se ha usado el plugin autocomplete de jquery por lo que podemos consultar la
documentacin oficial para conocer ms sobre este componente (http://bassistance.de/jquery-
plugins/jquery-plugin-autocomplete/).
Para personalizar este campo podremos usar los siguientes atributos:
url: atributo en el que indicaremos la ruta del recurso donde haremos la consulta.
Normalmente se usa una ruta relativa para evitar problemas, relativa a la url del
formulario. Esta nueva pgina recibir un parmetro q con el valor introducido por el
usuario en cada momento. Debe generar una pgina con la lista de posibles candidatos, de
forma que cada opcin ocupe una lnea. La lnea a su vez tendr el siguiente formato:
label | valor
En el resto de atributos podremos tratar tanto el label como el valor con los siguientes
atributos.
Options: Con este atributo podemos configurar las distintas opciones que nos ofrece el
plugin.
Result: Con este atributo podemos manipular los resultados obtenidos con la consulta
segn nuestras necesidades.
Ejemplo:
@AutocompleteInputText(mandatory=true,label="registrousuariofinal.codigopostal",url
="getcp.html", options="minChars:2,mustMatch:true,max:20,formatResult:
function(data) {if (data){var campos=data[1].split('@');return campos[0];}return
'';}", result="if (data){var
campos=data[1].split('@');$(\"#codigopostal\").val(campos[0]);$(\"#localidad\").val
(campos[1]);$(\"#provincia\").val(campos[2]);}",
help="registrousuariofinal.codigopostal")
private String codigopostalautocomplete;
Manual de Generador de Formularios

12
SAGA Soluciones Tecnolgicas
3. Clases java implicadas

3.1. Creacin del Bean
La clase bean es la clase donde aplicaremos las anotaciones antes comentadas y donde
estableceremos todos los campos de nuestro formulario.
Los objetos de esta clase sern donde almacenaremos la informacin redactada por los usuarios y
con la que podremos trabajar a la hora de implementar la funcionalidad deseada.
Uno de los aspectos importantes a tener en cuenta es que el orden con el que establezcamos los
atributos ser el orden que posteriormente se aplicar a la hora de generar el formulario.
Como toda clase bean, es necesario dispones de los mtodos getters y setters de cada campo,
mtodos que nos permitirn actualizar y obtener los valores.
3.2. Clase FormGenerator
Template Saga posee una clase que es la encargada de generar el formulario en base a nuestra
configuracin. En este caso, la clase responsable de hacer este recorrido es FormGenerator.
Adems, esta clase contendr todos los mtodos comunes que tienen los generadores de cada
anotacin.
3.1. Clase personalizada
Para poder implementar la funcionalidad asociada a nuestro formulario, deberemos crear una clase
propia. Lo ms importante en este caso es hace rque nuestra clase extienda la clase:
AbstractFormBeanSimple
Esta clase abstracta nos dar implementados una serie de mtodos y atributos que nos ser til a
la hora de gestionar nuestro formulario.
Las caractersticas principales de esta clase son:
Atributos propios de jsp: request, response, context y CmsJspActionElement.
Lista de errores: Esta clase ofrece 2 atributos donde guardar los posibles errores de
validacin o ejecucin que se produzcan. Estos son:
o List errors: se mostrar por encima del formulario como un error general del
formulario. Es una lista por tanto si queremos mostrar ms de uno tan solo
debemos agregar ms entradas en la lista.
Manual de Generador de Formularios

13
SAGA Soluciones Tecnolgicas
o Map errorMap: en este objeto Map almacenaremos como clave el nombre de un
campo y como valor el String que describe el error que se ha producido. Gracias a
este mapa podremos mostrar errores personalizados en cada campo, es decir,
dentro del propio campo donde se ha producido el error de validacin.
Mtodo proccessForm: Este mtodo es el que se debe invocar en la jsp cuando se enva el
formulario y que realiza todo el proceso. El proceso se divide en tres fases:
1. Se procesa el bean que almacena los parmetros, este proceso nos devuelve
errores de conversin.
2. En caso de que no haya errores de conversin se procede con la validacin
3. Si no hay errores de validacin se ejecuta el mtodo executeAction() que realiza las
operaciones necesarias sobre los datos
Para poder extender de esta clase lo haremos de la siguiente forma:
public class NombreNuestraClaseDeFormulario extends AbstractFormBeanSimple{

}
Una vez visto lo que nos ofrece la clase abstracta, veamos qu mtodos tenemos que implementar
obligatoriamente en nuestra clase:
Constructor
Debemos implementar un constructor tal que:
public RegistroInstaladorForm(PageContext context, HttpServletRequest
req,HttpServletResponse res)
{
super(context, req, res);
...
}
En este caso si fuera necesario inicializar algn dato ms podremos hacerlo donde estn los puntos
suspensivos ()
executeAction
En este mtodo debemos implementar la funcionalidad propia de nuestro formulario, es decir,
implementaremos la lgica de negocio. Una vez llegado el formulario a este mtodo se da por
hecho que los datos que llegan han sido validados previamente por lo que no tendremos que
volver a validarlos.
getParameterBean
Este mtodo devuelve el objeto que almacena los datos del formulario. Cada formulario debe tener
un objeto bean asociado. En nuestra clase deberemos mantener como atributo este objeto, que
ser lo que devolveremos en este mtodo.
Manual de Generador de Formularios

14
SAGA Soluciones Tecnolgicas
getRequesProcesor
Este mtodo retorna la clase encargada de procesar el bean que almacena los datos del formulario.
La implementacin para procesar el bean con los parmetros del request es la siguiente:
public BeanProcesor getRequesProcesor(){
return new RequestBeanMapper(getRequest(),new
ConversionErrorMessageBundle("com.saga.proyecto.workplace"));
}
El procesador del request puede ser de dos tipos: MultipartRequestProccessor o
DefaultRequestProccessor, segn si el formulario contiene un campo file, o no.
validate
Esta funcin es la encargada de validar la informacin introducida por el usuario. Tendr que
validar desde que todos los campos marcados como obligatorios hayan sido rellenos hasta que el
formato de cada campo es correcto segn las reglas establecidas en cada caso.
En el momento de que se detecto un error de validacin deberemos darlo de alta en las listas de
errores:
getErrors().add(Descripcin del error);
getErrorMap().put("campo",Descripcin del error);
3.2. PrintForm
La clase PrintForm es una clase de Template Saga situada en el paquete:
com.saga.opencms.templatesaga.formulario.print
Con esta clase nos ayudara a procesar el formulario y a pintar los campos configurados mediante
anotaciones en nuestro bean.
Los mtodos principales son:
print(): devuelve el cdigo html del formulario completo.
printPartial(): Devuelve el html del formulario sin la etiqueta form y sin los botones de
envio.
process(): Lee los campos del bean y monta el formulario
isSend(): Devuelve true si el formulario se ha enviado y false en caso contrario
setMessage(messages): Mtodo con el que podemos configurar el fichero de mensajes que
vamos a utilizar para mostrar el formulario. El locale utilizado ser el configurado por
defecto en la carpeta de OpenCms.
getMsg(key): Devuelve el valor de la key enviada por parmetro. Previamente es necesario
haber indicado el fichero de idiomas que vamos a utilizar.
Manual de Generador de Formularios

15
SAGA Soluciones Tecnolgicas

4. Nuestra jsp
Por ltimo, para terminar con el trabajo de generacin de un formulario tenemos que crear la jsp
que mostrar el formulario.
En nuestro caso esta jsp ser muy simple, tan solo tendremos que instanciar un objeto de nuestra
clase, y de la clase PrintForm de Template Saga.
Con el mtodo form.isSend(request) podremos saber si el formulario se ha enviado o no, en el caso
que no se haya enviado pintamos el formulario con form.print, y en caso contrario procesamos el
formulario con el mtodo processForm().

<%@ page language="java" contentType="text/html; UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="cms" uri="http://www.opencms.org/taglib/cms" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@page import="com.saga.opencms.templatesaga.formulario.print.PrintForm"%>
<%@page
import="com.saga.presupuestosenrenovables.frontend.form.RegistroInstaladorForm"%>
<%@page import="java.util.List"%>
<%@page import="org.opencms.jsp.CmsJspXmlContentBean"%>
<cms:include property="template" element="head" />
<cms:contentload collector="singleFile" param="%(opencms.uri)" editable="true" >

<div class="registroUsuario">
<div class="titulo">
<h1><cms:contentshow element="Title" /></h1>
</div>
<div class="registroUsuarioContenido">
<cms:contentcheck ifexists="Cabecera">
<div class="cabeceraNuevoRecurso">
<cms:contentshow element="Cabecera" />
</div>
</cms:contentcheck>
<%
CmsJspXmlContentBean cms= new
CmsJspXmlContentBean(pageContext,request,response);
RegistroInstaladorForm registroForm = new
RegistroInstaladorForm(pageContext,request,response);

PrintForm form = new
PrintForm(registroForm.getUsuario(),cms,"registroUsuario","POST",
"registroUsuario");

form.setMessages("com.saga.presupuestosenrenovables.frontend.messages");

if(!form.isSend(request)){
out.print(form.print());
}else{
registroForm.proccessForm();
if(registroForm.hasErrorValidation()){
List<String> error=registroForm.getErrors();
Manual de Generador de Formularios

16
SAGA Soluciones Tecnolgicas
for(String s:error){
out.print("<div class='error'>"+s+"</div>");
}
out.print(form.print());
}else{
out.print("<div
class='ok'>"+form.getMsg("mensaje.registroinstalador.ok")+"</div>");

}
}
%>
<cms:contentcheck ifexists="Pie">
<div class="pieNuevoRecurso">
<cms:contentshow element="Pie" />
</div>
</cms:contentcheck>

</div>
</div>

</cms:contentload>
<cms:include property="template" element="foot" />

Das könnte Ihnen auch gefallen