Desarrollo WEB.


Las practicas de programación orientadas a la web son muy cambiantes en el tiempo. Es necesario conocer e implementar tecnologías, conocer lenguajes,integrar comunidades,usar Ides, etc, recientes, para responder al mercado que se acerca.

Mostrando entradas con la etiqueta controladores. Mostrar todas las entradas
Mostrando entradas con la etiqueta controladores. Mostrar todas las entradas

martes, 14 de mayo de 2013

Ireport y el error : net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression

Cuando se usa la tecnología ireport para generar reportes, se presentan algunos detalles a tener en cuenta, cuando de su implementación en J2EE se trata.
  • Groovy es un lenguaje de desarrollo al igual que java.
  • Ireport contiene mecanismos para generar reportes en .pdf, .xls, etc. Su tecnología permite que las plantillas .xml que generan el contenido dinámico sea editadas en el ide en cualquier sistema operativo. Si no fuera así ireport no tendría versiones según el sistema operativo, es decir esa es una opción descartada en el proceso de test de fallos.
  • Ireport es un ide para editar plantillas xml que generan contenido en diferentes formatos
  • Jasperreport es la librería que permite transformar a partir de plantillas xml un archivo .pdf, .xls, etc.
  • Jaspersoft es la comunidad creadora de todo este cuento.

Mensaje de error enviado por el servidor sobre la excepción
 lanzada de ireport  cuando se trabaja con groovy.

[#|2013-05-14T15:53:21.684-0500|WARNING|glassfish3.1.2|javax.enterprise.resource
.webcontainer.jsf.lifecycle|_ThreadID=99;_ThreadName=Thread-2;|#{
controllerReporte.generarImpresion('reporte_comercial_pedidos.jasper',
comercialPedidoController.selected.idComercialPedido,'OF')}: 
net.sf.jasperreports.engine.JRRuntimeException: 
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
Source text : new java.lang.Integer(1)
javax.faces.FacesException: 
#{controllerReporte.generarImpresion('reporte_comercial_pedidos.jasper',
comercialPedidoController.selected.idComercialPedido,'OF')}: 
net.sf.jasperreports.engine.JRRuntimeException: 
net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression : 
Source text : new java.lang.Integer(1) at 
com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.
java:118)
at javax.faces.component.UICommand.broadcast(UICommand.java:315)
at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:935)
at 
com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.
java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
at 
org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)

Para dar solución se configura el ireport para que su compilador sea java mas no groovy. igualmente a cada reporte se le configura su lenguaje como java no groovy.

Configuración de propiedades en el reporte.

viernes, 12 de febrero de 2010

Concatenacion de Caracteres en paginas JSP (" "+String+" ");

La concatenacion en aplicaciones java web (JSP) es uno de los recursos que se hace irrelevante en el momento de obtener resultados de datos procesados en un controlador y de responder al usuario que hace la peticion o mejor dicho quien realiza la accion.

Una concatenacion permite juntar caracteres que vienen de variables ya sean (int) enteras, String (caracter), Date, etc.

Para la conbinacion de tipos de variables se emplean metodos para la conversion de datos como el famoso .toString(int); o Integer.parseInt("String");

En el siguiente codigo se define una variable tipo String que obtiene los datos de una lista, la idea basicamente es mostrar un valor String que se imprime en el html,, resultado de la concatenacion de un valor nombre1, nombre2, apellido1,apellido2 que contiene los datos de un usuario, si el usuario tiene un segundo apellido y un segundo nombre, se mostrara solo la Inicial en estilo mayuscula.



<%@page contentType="text/html"%>

<%@page pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

   "http://www.w3.org/TR/html4/loose.dtd">

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        <title>JSP Page</title>

    </head>

    <body>

        <h1>JSP (Concatenacion)</h1>

        <%

        try{

            

            List usuario=BeanUsuarios.getListaUsuarios(); //se crea un elemento tipo lista y se trae algunos valores de la clase BeanUsuarios y el metodo GetListaUsuarios que evidentemente sera un bean tipo list

            int contador=0;

            while(contador<=usuario.size()){ //para vaciar la lista se pregunta por el tamaño

            contador ++;

            String pdf="";

            //

            pdf+=("<span><strong>Apellidos: <strong>"+usuario.apellido1+"</span><div style=\"text-transform:uppercase;\"> ");

            if(usuario.apellido2.substring(0,1).length()!=0){

                pdf+=(""+usuario.apellido2.substring(0,1));

            }else{

                pdf+=(""+usuario.apellido2);

            }

            pdf+=(".</div> <span><strong>Nombre: <strong>"+usuario.nombre1);

            pdf+=("</span><div style=\"text-transform:uppercase;\"> "); //Estilo CSS para poner primera letra en mayuscula.

            if(usuario.nombre2.substring(0,1).length()!=0){//preguntar por el tamaño del valor de la propiedad de la lista usuarios

                pdf+=(""+usuario.nombre2.substring(0,1));

            }else{

                pdf+=(""+usuario.nombre2);

            }

            pdf+=(".</div>"); // el += hace que se siga almacendo en la variable sin eliminarse ningun caracter

            out.print(""+pdf); //Se imprime en la JSP

            }

           

        } catch (Exception ex) { //si existe un error en el codigo se obtiente una excepcion y se imprime el error en consola

            out.print("Error: "+ex.getMessage());

        }

        %>

        

        

        

    </body>

</html>




El Resultado final Sera de esta Manera.

Apellidos: Suarez S. Nombres: Yovany
o,
Apellidos: Suarez . Nombres: Yovany M.