4.2 Tutorial de Tapestry
|
|
|
- Consuelo Prado Blanco
- hace 10 años
- Vistas:
Transcripción
1 4.2 Tutorial de Tapestry
2 Índice Introducción Páginas Ejemplo pojo-tapestrytutorial Estructura del subsistema Capa modelo Plantillas Componentes PageLink, Form, TextField, Label, If Sintaxis de expansiones y valores de parámetros Catálogos de mensajes Formularios Validación de campos de entrada Clases Propiedades Inyección de páginas Manejadores de eventos Ciclo de vida de las páginas Comunicación de datos entre páginas
3 Objetivo Aprender los fundamentos básicos de Tapestry 5 para diseñar e implementar aplicaciones Web utilizando este framework
4 Introducción (1) Proyecto Apache Framework Java open source para la construcción de aplicaciones Web La primera versión fue concebida por Howard Lewis Ship en el año 1999 La versión actual, que será la que nosotros estudiaremos, es la 5 Construido sobre la API estándar de Servlets Puede utilizarse dentro de cualquier servidor de aplicaciones Java EE ligero (solamente necesita soporte para Servlets) Orientado a componentes Enfoque: Una aplicación se compone de un conjunto de páginas Web, cada una de las cuales se construye a partir de componentes que pueden generar diversos eventos ante los que la página puede reaccionar
5 Introducción (2) Algunas características Sigue el enfoque POJO Convenciones de nombrado Anotaciones Además de los componentes proporcionados por el framework permite que el desarrollador construya fácilmente sus propios componentes a medida Contiene componentes para interacciones AJAX Soporte para internacionalización Soporte para validación de datos de entrada Soporte para Inyección de Dependencias Integración con Hibernate Soporte para implementar aplicaciones Web CRUD directamente con Hibernate (sin Spring) Integración con Spring Útil cuando la lógica de negocio es más compleja y está implementada con Spring (como es nuestro caso)
6 Introducción (y 3) Desde un punto de vista de alto nivel, una aplicación Tapestry puede ser vista como un conjunto de páginas interactivas que son gestionadas por el framework Estás páginas recuerdan los valores introducidos por el usuario en los campos de entrada Cuando el usuario realiza alguna acción, como por ejemplo un clic sobre un enlace o un botón, pueden reaccionar a esa acción ejecutando un método que actúa como manejador del evento producido por ese componente Desde un punto de vista de más bajo nivel, cuando la aplicación Web recibe una petición, utiliza la página apropiada para generar la respuesta (normalmente una página HTML) y se la envía al navegador Cuando el usuario realiza alguna acción sobre la página HTML recibida (como por ejemplo rellenar un campo de texto y pulsar un botón), entonces esa información es enviada de vuelta a la aplicación Tapestry, a través de otra petición Dependiendo de la lógica de la aplicación y de las acciones del usuario, la información es pasada a la misma página o a otra página para procesar la petición y generar la respuesta adecuada
7 Páginas (1) Cada página tiene asociada una plantilla y una clase Java Ambas deben tener el mismo nombre El objetivo de la clase Java es recibir los eventos relativos a la página y el objetivo de la plantilla es generar el markup de la página Una plantilla es un documento XML que permite generar markup En el caso de una aplicación Web, el markup es normalmente HTML o XHTML, pero también podría ser, por ejemplo, XML (y en este último caso, la aplicación Web actuaría como un servicio Web REST) Tiene extensión.tml (Tapestry Markup Language) El XML incluirá referencias a componentes (proporcionados por el framework o desarrollados por el usuario) y también puede incluir expansiones (expresiones que permiten insertar valores de propiedades de la clase Java o textos internacionalizados en la plantilla) Cuando Tapestry genera el markup para una página, le pide a cada componente que esté presente en la plantilla de la página que genere el código correspondiente
8 Páginas (y 2) Las clases son POJOs No extienden de ninguna clase ni implementan ninguna interfaz del framework Tienen propiedades para almacenar el estado de la página Pueden contener métodos para implementar la funcionalidad de la página Son invocados cuando se producen determinados eventos en algún componente de la página Se utilizan convenciones de nombrado o anotaciones para asociar métodos a eventos generados por componentes Cuando se genera el WAR de la aplicación Web, la clase (fichero.class) y la plantilla (fichero.tml) deben colocarse en el mismo directorio (que vendrá determinado por el paquete al que pertenece la página)
9 pojo-tapestrytutorial Para el tutorial de Tapestry utilizaremos el módulo pojo-tapestrytutorial de los ejemplos Implementa las capas modelo y Web de la misma mini-aplicación bancaria implementada para el tutorial de Servlets y JSPs que, recordemos, tiene los siguientes casos de uso Crear una cuenta Buscar una cuenta a partir de su identificador
10 Página principal del tutorial Tapestry Tutorial Main Page Clic en Create Account Clic en Find Account Create Account Form Find Account Form
11 Demo: Creación de una Cuenta Create Account Form Create Account Form Created Account Data
12 Demo: Control de Errores El identificador de usuario y el balance son obligatorios Create Account Form El identificador de cuenta debe ser un número entero y >=0 Create Account Form Create Account Form El balance debe ser un número real y >=0
13 Demo: Búsqueda de una cuenta Find Account Form Find Account Form Account Data
14 Demo: Control de Errores El identificador de cuenta es obligatorio Find Account Form El identificador de cuenta debe ser un número entero y >=0 Find Account Form Account Data Debe existir alguna cuenta con el identificador introducido
15 Estructura del Subsistema (1) pojo-tapestrytutorial src/main java es.udc.pojo.tapestrytutorial model account web.pages accountservice resources *.java es/udc/pojo/tapestrytutorial/web/pages webapp/web-inf *.tml *.properties web.xml app.properties
16 Estructura del Subsistema (y 2) Cada página Tiene su clase asociada en el paquete es.udc.pojo.tapestrytutorial.web.pages dentro del directorio de código fuente src/main/java Tiene su plantilla asociada en el directorio es/udc/pojo/tapestrytutorial/web/pages dentro del directorio de recursos src/main/resources De esta forma el fichero.tml de la plantilla correspondiente a cada página se copiará (durante la fase de procesamiento de recursos de Maven) al mismo directorio en el que se genera el fichero.class resultado de compilar la clase de la página (dentro de target/classes)
17 Capa Modelo (1) La capa modelo de la aplicación es exactamente igual que la del subsistema pojo-servjsptutorial Recuérdese que para simplificar su implementación Se ha optado por la realización de la persistencia en memoria, en lugar de utilizar una BD Se ha definido la implementación del servicio directamente, sin crear una interfaz
18 Capa Modelo (y 2) Modelado de entidades Account Representa una cuenta bancaria, con la misma información que la comentada para pojominibank Definición API modelo AccountServiceImpl Define los métodos createaccount y findaccount No utiliza DAOs porque mantiene las cuentas en memoria en lugar de hacerlas persistentes Account - accountid : Long - userid : Long - balance : double + Constructores + métodos get/set AccountServiceImpl - lastaccountid : long - accounts: Map<Long, Account> + createaccount(account : Account) : Account + findaccount(accountid : long) : Account
19 web.xml <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" " <!-- ====================================================================== --> <!-- Tapestry 5 web application configuration --> <!-- ====================================================================== --> <web-app> <display-name>pojo-examples Tapestry Tutorial</display-name> <context-param> <param-name>tapestry.app-package</param-name> <param-value>es.udc.pojo.tapestrytutorial.web</param-value> </context-param> <filter> <filter-name>app</filter-name> <filter-class>org.apache.tapestry5.tapestryfilter</filter-class> </filter> <filter-mapping> <filter-name>app</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
20 Filtros Disponibles desde la versión 2.3 de la API de Servlets Proporcionan un mecanismo estándar para interceptar peticiones y respuestas dentro de un contenedor de Servlets, para transformar o utilizar la información contenida en ellas Permiten capturar una petición y cambiar el flujo de ésta (decidir a qué Servlet dirigirla, rechazarla, procesarla, etc.) También permiten realizar transformaciones sobre las respuestas generadas Se definen con la etiqueta filter filter-name: Indica el nombre del filtro filter-class: Indica la clase Java que lo implementa La etiqueta filter-mapping indica cuando debe invocarse un filtro filter-name: Nombre del filtro a aplicar url-pattern: Patrón que indica para qué peticiones debe aplicarse
21 Integración en un Contenedor de Servlets Tapestry se integra dentro de un contenedor de Servlets a través de un filtro En el fichero web.xml debe declararse el filtro org.apache.tapestry5.tapestryfilter Puede dársele cualquier nombre, aunque suele utilizarse app Este filtro procesa todas las peticiones relativas a Tapestry y pasa el resto de peticiones al contenedor de Servlets Cuando se accede al directorio raíz de una aplicación Tapestry entonces envía la petición a la página Index Además, para cada aplicación debe configurarse el paquete raíz de la aplicación a través de un parámetro con nombre tapestry.app-package Tapestry utiliza este paquete para localizar las clases relativas a las páginas y los componentes creados por el usuario utilizados en la aplicación Las clases de los componentes deben ir en el sub-paquete components Las clases de las páginas deben ir en el sub-paquete pages (en nuestro ejemplo es.udc.pojo.tapestrytutorial.web.pages)
22 Index.tml (1) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " <html xmlns=" xmlns:t=" xml:space="preserve"> <head> <title>${message:title}</title> </head> <body text="#000000" bgcolor="#ffffff"> <div align="center"> <p><font color="#000099" size="+2" face="arial, Helvetica, sans-serif"> <b>${message:title}</b></font><br/> </p> </div>
23 Index.tml (y 2) <div align="center"> <a href="#" t:type="pagelink" t:page="createaccount">${message:createaccount}</a> <br/> <a href="#" t:type="pagelink" t:page="findaccount">${message:findaccount}</a> </div> </body> </html>
24 Plantillas (1) A través de la declaración DOCTYPE se hace referencia a la DTD de XHTML 1.0, y se indica además que el elemento raíz es html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " El elemento raíz incluye la declaración de un espacio de nombres <html xmlns=" xmlns:t=" xml:space="preserve"> Cualquier elemento o atributo que tenga prefijo t pertenece al espacio de nombres de Tapestry En el markup generado, no se incluye la importación del espacio de nombres de Tapestry
25 Plantillas (y 2) Tapestry elimina todos los espacios y retornos de carro de la plantilla que sean innecesarios para la respuesta generada. Por ejemplo: Dentro de un bloque de texto las secuencias de espacios se sustituyen por un único espacio Los bloques de texto entre dos tags HTML, compuestos únicamente por espacios y retornos de línea, son eliminados Si se examina la respuesta generada (por ejemplo con la opción Ver código fuente de un navegador) puede verse que está todo en pocas líneas Para variar este comportamiento debe usarse el atributo XML estándar xml:space, para indicar a Tapestry que conserve los espacios y retornos de carro (xml:space="preserve") El markup generado no incluye este atributo Útil para depuración mientras se está desarrollando la aplicación
26 Componentes Definición de componentes Es posible incluir componentes dentro de una plantilla utilizando el elemento correspondiente (dentro del espacio de nombres de Tapestry) <t:pagelink page="createaccount">${message:createaccount}</t:pagelink> Tiene el inconveniente potencial de que se pierde la capacidad de visualizar la plantilla, como una página HTML, en un navegador Otra alternativa consiste en incluir la definición del componente dentro de un elemento HTML estándar utilizando el atributo t:type para indicar el tipo del componente <a href="#" t:type="pagelink" t:page="createaccount">${message:createaccount}</a> En los ejemplos de la asignatura se ha seguido esta aproximación Los nombres de los componentes no son sensibles a mayúsculas/minúsculas
27 Convenciones en el uso del espacio de nombres de Tapestry con atributos Para favorecer la legibilidad, en los ejemplos de la asignatura se han seguido las siguientes convenciones en el uso del espacio de nombres de Tapestry con atributos Cuando se usa un componente de Tapestry dentro de un elemento HTML => se ha usado el prefijo del espacio de nombres de Tapestry en los atributos propios del componente <a href="#" t:type="pagelink" t:page="createaccount >...</a> Cuando se usa un componente de Tapestry directamente => no se ha utilizado el prefijo del espacio de nombres de Tapestry en los atributos del componente <t:if test="account">...</t:if> En cualquier caso => siempre se ha usado el prefijo del espacio de nombres de Tapestry para el atributo id en los componentes que lo necesitan Para el atributo especial id, el prefijo siempre es necesario <t:select t:id="language" model="languages"/>
28 Componente PageLink Su propósito es visualizar un enlace que apunte hacia otra página de la aplicación Se define dentro de un elemento HTML de tipo a Debe declararse el atributo t:type con valor PageLink El atributo t:page sirve para indicar el nombre la página a la que se debe navegar cuando se hace clic en el enlace Se refiere al nombre lógico de la página En el markup generado sustituye el valor del atributo href por un valor apropiado (en función del valor del atributo t:page) y al igual que cualquier otro componente, elimina el atributo t:type Desde la plantilla de la página Index se ha utilizado este componente para generar dos enlaces hacia las páginas CreateAccount y FindAccount
29 Sintaxis de expansiones y valores de parámetros (1) Los valores de los parámetros de los componentes se especifican con la sintaxis prefijo:valor y las expansiones mediante ${prefijo:valor} Entre otros, existen los siguiente prefijos literal: indica que valor debe interpretarse como un literal prop: indica que valor es el nombre de una propiedad de la clase de la página (se accederá a ella través del método get correspondiente) message: indica que valor es la clave de un mensaje del catálogo de mensajes
30 Sintaxis de expansiones y valores de parámetros (2) En el caso de acceso a propiedades (prefijo prop) es posible Referirse a subpropiedades Ejemplo: propiedad.subpropiedad invocaría el método getsubpropiedad sobre el objeto devuelto por el método getpropiedad de la página Invocar a un método del objeto que no sea un getter (utilizando paréntesis a continuación del nombre del método) Ejemplo: propiedad.hashcode() invocaría el método hashcode sobre el objeto devuelto por el método getpropiedad de la página Invocar a un método del objeto pasándole parámetros (se indican separados por comas dentro de los paréntesis) Los parámetros son a su vez expresiones que pueden referirse a propiedades del objeto
31 Sintaxis de expansiones y valores de parámetros (y 3) Prefijos por defecto Un parámetro puede definir un prefijo por defecto, y de hecho es lo habitual, de manera que en ese caso, el valor del parámetro se puede especificar sin incluir el prefijo La documentación de un componente especifica para cada parámetro su prefijo por defecto En el caso de las expansiones, el valor por defecto del prefijo es prop
32 Catálogos de Mensajes (1) app.properties accountid-label=account Identifier balance-label=balance link-home=home userid-label=user Identifier Index.properties createaccount=create Account findaccount=find Account title=tapestry Tutorial Main Page
33 Catálogos de Mensajes (2) Forman parte del soporte de internacionalización que proporciona Tapestry Permiten que los textos fijos de las plantillas, en lugar de escribirlos directamente en ellas, se escriban en un fichero de mensajes Ficheros.properties Existe un catálogo de mensajes general para toda la aplicación Mensajes visibles desde todas las páginas Debe colocarse dentro del directorio WEB-INF El nombre debe ser el mismo que el que se le dio al filtro de Tapestry en el fichero web.xml En el ejemplo debe llamarse, por tanto, app.properties En este fichero deben colocarse los mensajes que sean comunes a varias páginas
34 Catálogos de Mensajes (3) Es posible definir un fichero de mensajes específicos para una página Debe tener el mismo nombre que la página y debe estar en el mismo directorio que ella (en la estructura de código fuente están colocados en el mismo directorio que la plantilla de la página) Los mensajes definidos en este fichero solo serán visibles para la página en cuestión Por ejemplo los mensajes definidos en Index.properties solamente son visibles para la página Index Los mensajes se referencian a través de una expansión utilizando el prefijo message seguido de la clave del mensaje en el fichero de mensajes La sintaxis es ${message:clave} Primero se busca la clave en el fichero de mensajes específico de la página (si existe) y si no se encuentra, entonces se busca en el fichero de mensajes general
35 Catálogos de Mensajes (y 4) En el apartado 4.3 se explicará cómo pueden utilizarse los ficheros de mensajes junto con otras funcionalidades proporcionadas por Tapestry para visualizar una aplicación en diferentes idiomas
36 Index.java package es.udc.pojo.tapestrytutorial.web.pages; public class Index {} La clase asociada a la página Index no define ninguna propiedad ni ningún método
37 CreateAccount.tml (1) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " <html xmlns=" xmlns:t=" xml:space="preserve"> <head> <title>${message:title}</title> </head> <body> <form t:type="form" t:id="createaccountform"> <t:errors/> <table width="100%" border="0" align="center" cellspacing="12">
38 CreateAccount.tml (2) <!-- User Identifier --> <tr> <th align="right" width="50%"> <t:label for="userid"/> </th> <td align="left"> <input t:type="textfield" t:id="userid" t:validate="required, min=0" size="16" maxlength="16" /> </td> </tr> <!-- Balance --> <tr> <th align="right" width="50%"> <t:label for="balance"/> </th> <td align="left"> <input t:type="textfield" t:id="balance" t:validate="required,min=0" size="16" maxlength="16"/> </td> </tr>
39 CreateAccount.tml (y 3) <!-- Create button --> <tr> <td width="50%"></td> <td align="left" width="50%"> <input type="submit" value="${message:create}"/> </td> </tr> </table> </form> </body> </html>
40 CreateAccount.properties create=create title=create Account Form
41 Componente Form En la plantilla se ha incluido un componente Form (t:type="form"), embebido dentro de una etiqueta form HTML, que dentro contiene otros componentes Este componente genera un formulario HTML En la clase de la página puede haber definidos manejadores asociados a los eventos que genera este componente Hay una serie de eventos que se generan cuando se visualiza el componente y otros cuando se envía el formulario (submit) El componente contiene un elemento HTML input de tipo submit, que sirve para enviar el formulario Se le ha asignado un identificador a través del atributo t:id Como se verá más adelante, este identificador puede ser utilizado desde el código de la clase de la página para indicar cuales son los manejadores de eventos de este formulario t:id es un atributo especial que tienen todos los componentes y su valor identifica al componente de manera única dentro de la página
42 Componente TextField (1) Dentro del formulario hay dos componentes de tipo TextField embebidos dentro de dos elementos input HTML (t:type="textfield") Este componente está ligado a una propiedad de la clase de la página El atributo t:value sirve para indicar el nombre de la propiedad a la que está asociado Si no existe ese atributo entonces t:id es el que indica el nombre de la propiedad a la que está asociado La clase debe tener métodos get y set para acceder al valor de la propiedad y establecerlo Por ejemplo, el primer TextField tiene el valor userid para la propiedad t:id, por tanto estará asociado a la propiedad userid, lo que implica que la clase de la página debe tener los métodos getuserid y setuserid
43 Componente TextField (y 2) Dentro del formulario hay dos componentes de tipo TextField embebidos dentro de dos elementos input HTML (cont) Este componente se visualiza como un campo de texto (un input de tipo text), conteniendo el valor de la propiedad a la que está asociado Accede a la propiedad de la clase para recuperar su valor a través del método get correspondiente Cuando se envía el formulario al servidor, se le asigna el valor que contenga en ese momento el campo de texto a la propiedad a la que está asociada Establece el valor de la propiedad en la clase a través del método set correspondiente
44 Componente Label El componente Label genera el tag HTML <label> asociado a un campo de entrada de un formulario En CreateAccount.tml se han utilizado dos componentes Label para visualizar la etiqueta asociada a los dos campos de texto del formulario En este caso el componente se ha declarado directamente a través del elemento t:label El atributo for indica el identificador del componente cuya etiqueta debe ser visualizada (en nuestro caso los identificadores de los componentes TextField) Para obtener el valor de la etiqueta asociada a un componente TextField Primero se mira si tiene un atributo t:label y si existe se usa su valor Puede ser constante o leerse de un fichero de mensajes Si no existe ese atributo se genera en función del identificador del componente (atributo t:id) Si existe una clave en el fichero de mensajes id-label (sustituyendo id por el identificador del componente) se usa el valor que tenga asignado (por ejemplo userid-label=user identifier) Si no, se genera en función del valor del identificador dividiéndolo en palabras (por ejemplo userid se dividiría como User Id )
45 Validación de campos de formularios (1) Tapestry proporciona un conjunto de validadores que pueden ser aplicados a los campos de entrada de un formulario a través del atributo t:validate Para los campos de texto userid y balance se han utilizado los validadores required: Comprueba que el valor asignado al campo no sea nulo ni la cadena vacía min: Comprueba que el valor numérico asignado al campo no sea menor que la cantidad indicada (0 en este caso) Por defecto, cuando se produce algún error de validación en el envío de un formulario se vuelve a mostrar la misma página que lo contiene Este comportamiento puede variarse proporcionando un manejador para el evento adecuado
46 Validación de campos de formularios (y 2) Los validadores básicos proporcionados por Tapestry realizan las validaciones en el navegador (JavaScript) y también en el lado servidor (por seguridad y por si el cliente tiene deshabilitado JavaScript) Para visualizar los mensajes de error (lado servidor) asociados a los validadores utilizados dentro de un formulario se emplea el componente Errors (elemento t:errors) Debe colocarse dentro del componente Form que incluye a los componentes que tienen los validadores Es recomendable utilizarlo siempre por si el navegador tiene deshabilitado JavaScript Otros validadores proporcionados por Tapestry son minlength/maxlength: Comprueban que la longitud de la cadena asignada al campo no sea menor/mayor que la cantidad indicada max: Comprueba que el valor numérico asignado al campo no sea mayor que la cantidad indicada regexp: Comprueban que la cadena asignada al campo concuerda con un patrón Es posible añadir nuevos validadores
47 CreateAccount.java public class CreateAccount { private Long private Double private AccountCreated accountcreated; Object onsuccess() { } Account account = new Account(userId, balance); new AccountServiceImpl().createAccount(account); accountcreated.setaccountid(account.getaccountid()); return accountcreated;
48 Propiedades La clase CreateAccount contiene dos propiedades asociadas a los dos campos de texto presentes en la plantilla de la página: userid y balance Como se había dicho con anterioridad el acceso a esas propiedades se hace a través de métodos get/set La permite anotar campos para los que deben crearse métodos get/set De esta forma no es necesario escribir esos métodos Si se usa la anotación, los métodos get/set no pueden existir
49 Inyección de páginas Utilizando el patrón de inyección de dependencias, la permite inyectar una página en una propiedad de otra página Tiene un atributo opcional (value) que debe ser utilizado cuando el tipo de la página a inyectar no puede ser determinado (e.g. el tipo de la propiedad en la que se inyecta es una interfaz que cumple la página a ser inyectada)
50 Formularios El componente Form genera una serie de eventos (tanto a la hora de visualizarse como a la hora de hacer un submit de él) para los cuales se puede proporcionar un manejador en la clase de la página que contiene el formulario En CreateAccount se proporciona un manejador para el evento success, que es emitido una vez que el formulario se ha enviado al servidor y sus campos de entrada se han validado correctamente Para procesar un evento, existen dos posibilidades Definir un método con el formato onxxx, siendo Xxx el nombre del evento (e.g. onsuccess) Usar la sobre el nombre de un método (que puede tener un nombre arbitrario) NOTA: en el código de los ejemplos, se ha preferido la primera opción (convención de nombrado) El método onsuccess actúa como manejador del evento success para todos los formularios de la página Si hubiese más de un formulario podría especificarse un manejador diferente para cada uno en función de su identificador (atributo t:id) A través del nombre del método: onsuccessfromcreateaccountform Anotando el = success", component = createaccountform")
51 Manejadores de eventos (1) Un manejador de un evento puede devolver Nada (tipo de retorno void o cuando devuelve null): En este caso la misma página vuelve a ser visualizada Una nueva página de la aplicación a ser visualizada String: Debe ser el nombre lógico de la página Class: La clase de la página Una instancia de la clase de la página (útil cuando la página debe ser configurada de alguna manera) Link: Una implementación de la interfaz Link que será convertida a una URL a la cual será redirigido el cliente URL: El cliente será redirigido a esa URL StreamResponse: Un objeto de tipo Stream que permite enviar datos binarios al cliente (e.g. fichero PDF) Cualquier otro objeto devuelto producirá un error
52 Manejadores de eventos (y 2) El manejador del evento success de la página CreateAccount (método onsuccess) Crea un objeto Account a partir de las propiedades userid y balance de la página Serán los valores (ya validados) que se hayan introducido en los campos de texto del formulario Llama al servicio del modelo para crear la cuenta Utiliza la instancia de la página de tipo AccountCreated que ha sido inyectada y establece el identificador de la cuenta que se acaba de crear a través del método setaccountid Esa página lo necesita puesto que muestra el identificador de la cuenta creada Devuelve la instancia de la página de tipo AccountCreated Por tanto, esa será la siguiente página a ser visualizada
53 AccountCreated.java package es.udc.pojo.tapestrytutorial.web.pages; public class AccountCreated { private Long accountid; public Long getaccountid() { return accountid; } NOTA: No se ha utilizado la sobre el campo accountid porque desde la clase CreateAccount se llama al método setaccountid (y por tanto el método debe existir en tiempo de compilación) public void setaccountid(long accountid) { this.accountid = accountid; } Long onpassivate() { return accountid; } void onactivate(long accountid) { this.accountid = accountid; } }
54 Ciclo de vida de las páginas Para mejorar el rendimiento Tapestry mantiene un pool de instancias para cada página Cuando se solicita una página, obtiene una instancia del pool para atender esa petición Una vez atendida la petición la página es devuelta al pool Antes de devolverla al pool las variables de la instancia son inicializadas para borrar los datos específicos de esa petición Hay que tener en cuenta que cada vez que se trabaja con una página puede ser una instancia distinta Cuando el manejador del evento success de la página CreateAccount devuelve una instancia de la página AccountCreated (en la que ha establecido el identificador de la cuenta que se ha creado) Realmente lo que se hace es indicarle al navegador que haga una nueva petición sobre la página AccountCreated Cuando esa petición llega a la aplicación, se coge una instancia de la página AccountCreated del pool, y la utiliza para generar la respuesta PROBLEMA: La instancia que se ha cogido del pool no tiene establecido el identificador de la cuenta que se ha creado!!!
55 Comunicación de datos entre páginas Existen dos mecanismos que permiten pasar datos entre páginas Se puede hacer que un campo de la página sea persistente Los campos persistentes se anotan El valor de estos campos se guarda en la sesión (HttpSession) Cada vez que se obtiene del pool una página que tenga un campo persistente se busca en la sesión el valor del campo y se establece en la página Desventajas: Menor escalabilidad al hacer uso de la sesión para almacenar datos No es posible hacer bookmarks a esas páginas Se puede utilizar el contexto de activación de páginas Requiere más código pero no utiliza la sesión y permite hacer bookmarks a las páginas Es la opción elegida en el ejemplo
56 Contexto de Activación de Páginas (1) Para hacer una página activable basta con añadirle los métodos onactivate y onpassivate Cuando una página implementa estos métodos Antes de ser devuelta al pool se invoca el método onpassivate Este método debe devolver los datos que necesitará la página para visualizar los datos deseados Estos datos se incluyen en la URL a la que se redirige el cliente junto con el nombre de la página No se hace uso de la sesión Es posible hacer un bookmark a esa URL Cuando se recibe la petición del cliente, se obtiene una nueva instancia del pool y se llama al método onactivate pasándole los datos que vienen incluidos en la petición Recibe, por tanto, los datos que devuelve onpassivate
57 Contexto de Activación de Páginas (y 2) El método onpassivate de AccountCreated devuelve el identificador de la cuenta creada Cuando el método onsuccess de la clase CreateAccount devuelve la instancia de AccountCreated (suponiendo que el identificador de la cuenta creada es 1) la URL a la que se redirige al cliente es El método onactivate recibe el identificador de la cuenta creada y lo almacena en la variable accountid (invocando al método setaccountid) Los datos que devuelve onpassivate y recibe onactivate tienen que ser tipos simples (o sus contrapartidas objetuales) o String Es posible pasar más de un dato entre páginas onpassivate puede devolver un Object[] onactivate puede recibir más de un parámetro Cada parámetro, de izquierda a derecha, corresponde a un elemento del array Object[], y Tapestry hace automáticamente un cast al tipo de parámetro
58 AccountCreated.tml <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " <html xmlns=" xmlns:t=" xml:space="preserve"> <head> <title>${message:title}</title> </head> <body text="#000000" bgcolor="#ffffff"> <div align="center"> <p> <font color="#000099" face="arial, Helvetica, sans-serif"> <b>${message:bodymessage-1} ${accountid} ${message:bodymessage-2}</b> </font> </p> </div> <br/> <a href="#" t:type="pagelink" t:page="index">${message:link-home}</a> <br/> </body> </html>
59 AccountCreated.properties bodymessage-1=account number bodymessage-2=created sucessfully title=created Account Data
60 Creación de una cuenta (AccountCreated) En AccountCreated.tml se usa la expansión ${accountid} y por tanto se llama al método getaccountid de la clase AccountCreated, que en este caso contendrá el identificador de la cuenta que se ha creado Recuérdese que ese valor se le pasó a través del mecanismo de activación de páginas
61 FindAccount.tml (1) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " <html xmlns=" xmlns:t=" xml:space="preserve"> <head> <title>${message:title}</title> </head> <body text="#000000" bgcolor="#ffffff"> <form t:type="form" t:id="findaccountform"> <t:errors/> <table width="100%" border="0" align="center" cellspacing="12">
62 FindAccount.tml (2) <!-- Account Identifier --> <tr> <th align="right" width="50%"> <t:label for="accountid"/> </th> <td align="left"> <input t:type="textfield" t:id="accountid" t:validate="required, min=0" size="16" maxlength="16"/> </td> </tr> <!-- Search button --> <tr> <td width="50%"></td> <td align="left" width="50%"> <input type="submit" value="${message:find}"/> </td> </tr> </table> </form> </body> </html>
63 FindAccount.java public class FindAccount { private Long private AccountDetails accountdetails; Object onsuccess() { } accountdetails.setaccountid(accountid); return accountdetails;
64 Búsqueda de una cuenta (FindAccount) FindAccount.tml Contiene un formulario con un campo de texto para introducir el identificador de la cuenta buscada Se valida que tenga algún valor y que sea mayor que 0 FindAccount.java Tiene una propiedad para almacenar el identificador de la cuenta buscada Se le inyecta una página de tipo AccountDetails (utilizada para mostrar los detalles de una cuenta) Tiene un manejador para el evento success que utiliza la página inyectada para establecerle el identificador de la cuenta buscada y la devuelve como resultado
65 AccountDetails.java public class AccountDetails { private Long accountid; private Account account; } public void setaccountid(long accountid) { this.accountid = accountid; } public Account getaccount() { return account; } void onactivate(long accountid) { this.accountid = accountid; try { account = new AccountServiceImpl().findAccount(accountId); } catch (InstanceNotFoundException e) { } } Long onpassivate() { return accountid; }
66 Búsqueda de una cuenta (AccountDetails.java) Utiliza el contexto de activación de páginas En el método onpassivate se devuelve el identificador de la cuenta buscada Cuando se envía el formulario de búsqueda de cuenta, suponiendo que se está buscando la cuenta con identificador 1, la URL a la que se redirige el cliente será Es posible hacer un bookmark sobre esa URL En el método onactivate Se llama al modelo para recuperar una cuenta con el identificador especificado por el usuario Si la cuenta se encuentra, se guarda en la variable account Si la cuenta no se encuentra, se captura la excepción y no se hace nada (simplemente se deja a null la variable account) Define el método getaccount para permitir el acceso a la propiedad account
67 AccountDetails.tml (1) <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" " <html xmlns=" xmlns:t=" xmlns:p="tapestry:parameter" xml:space="preserve"> <head> <title>${message:title}</title> </head> <body text="#000000" bgcolor="#ffffff"> <div align="center"> <p> <font color="#000099" face="arial, Helvetica, sans-serif"> <b>${message:header}</b> </font> </p> </div> <div align="center">
68 AccountDetails.tml (2) <t:if test="account"> <table border="1" align="center" width="35%"> <tr> <th width="60%">${message:accountid-label}</th> <td width="30%" align="center">${account.accountid}</td> </tr> <tr> <th width="60%">${message:userid-label}</th> <td width="30%" align="center">${account.userid}</td> </tr> <tr> <th width="60%">${message:balance-label}</th> <td width="30%" align="center">${account.balance}</td> </tr> </table> <p:else> <font color="#000099" face="arial, Helvetica, sans-serif"> <b>${message:accountnotfound}</b> </font> </p:else> </t:if>
69 AccountDetails.tml (3) </div> <br/> <a href="#" t:type="pagelink" t:page="index">${message:link-home}</a> <br/> </body> </html>
70 Componente If El componente If muestra su contenido si se cumple una condición El parámetro test recibe un valor de tipo booleano Si es true se muestra el contenido del componente El prefijo por defecto para este parámetro es prop Permite otros tipos de valores no booleanos Object: true si no es null Number: true si no es 0 Collection: true si no está vacía String: true si no es la cadena vacía y no es el literal false Tiene un parámetro opcional else que permite proporcionar un contenido alternativo a ser mostrado si la condición no se cumple El espacio de nombres tapestry:parameter sirve para pasar parámetros de bloque a componentes En Tapestry, un bloque (block) es un trozo de plantilla Normalmente se le asigna el prefijo p Con este espacio de nombres definido, los parámetros de bloque se pasan a través de un elemento que se construye usando el prefijo p: seguido del nombre del parámetro <p:else> </p:else>
71 Búsqueda de una cuenta (AccountDetails.tml) Utiliza un componente If para determinar si la propiedad account de la página (accedida a través del método getaccount) es distinta de null Recuérdese que el prefijo por defecto del parámetro test del componente If es prop Si es distinta de null se usan expansiones para mostrar los valores de los campos de la cuenta Por ejemplo ${account.accountid} inserta el resultado de invocar a getaccount().getaccountid() Si es null significa que no se ha encontrado ninguna cuenta con el identificador introducido por el usuario y se muestra un mensaje indicando que no se ha podido encontrar dicha cuenta
La plantilla propone aprovechar esta estructura en común y sólo modificar el contenido del área del documento que sea diferente.
PLANTILLAS EN PHP El concepto de plantilla, es un criterio del desarrollo web que propone optimizar la cantidad de documentos HTML que se usan en el desarrollo de un sitio web. A lo largo de la navegación
Introducción al desarrollo web (idesweb)
Introducción al desarrollo web (idesweb) Práctica 8: PHP 2 (cookies y sesiones) 1. Objetivos Conocer el concepto de cookie y sus posibles usos. Aprender a utilizar las cookies con PHP. Conocer el concepto
Integración Capa Web de pojo-miniportal (1)
Integración Capa Web de pojo-miniportal (1) 1. Cambiar tipo de proyecto maven de "JAR" a "WAR 2. Añadir dependencias del API de Tapestry 3. Añadir configuración del plugin de Jetty al pom.xml 4. Añadir
En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.
Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa
MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora
MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA Perfil Entidad Proveedora El objetivo del módulo de Gestión de Solicitudes vía Internet es facilitar el trabajo
MANUAL DE USUARIO FACTURACIÓN ELECTRÓNICA
MANUAL DE USUARIO FACTURACIÓN ELECTRÓNICA Proveedores PLATAFORMA FACTURACIÓN ELECTRÓNICA PARA PROVEEDORES DE LA JUNTA DE COMUNIDADES DE CASTILLA LA MANCHA. Índice 1. INTRODUCCIÓN... 3 2. ACCESO A LA PLATAFORMA
Configuración servidor Tomcat
Apuntes de J2EE Configuración servidor Tomcat Uploaded by Ingteleco http://ingteleco.webcindario.com [email protected] La dirección URL puede sufrir modificaciones en el futuro. Si no funciona contacta
Ejercicios - Persistencia en Android: ficheros y SQLite
Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base
Capítulo 1 Documentos HTML5
Capítulo 1 Documentos HTML5 1.1 Componentes básicos HTML5 provee básicamente tres características: estructura, estilo y funcionalidad. Nunca fue declarado oficialmente pero, incluso cuando algunas APIs
GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII
GUÍA Nro. 1 TECNOLOGÍA DE INTERNET. TIII PIII GUIA DISPONIBLE EN: http://preparadorivan.blogspot.com/ - http://preparadormssi.50webs.com/inicio.html La World Wide Web o la Web, es una de las múltiples
Ejemplos básicos de webmathematica para profesores
Ejemplos básicos de webmathematica para profesores Cualquier cálculo hecho dentro Mathematica puede ser realizado usando webmathematica con dos limitaciones significativas. Primero, al usar webmathematica,
EXTENSIÓN DE UML PARA APLICACIONES WEB
EXTENSIÓN DE UML PARA APLICACIONES WEB 1. Descripción Esta extensión de UML define un conjunto de estereotipos, valores etiquetados y restricciones que nos permiten modelar aplicaciones web. Los estereotipos
ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009)
JOOMLA! ÍTEMS DEL MENÚ CREACIÓN Y GESTIÓN (Última revisión: lunes, 9 de marzo de 2009) Es necesario comentar que este manual ha sido diseñado en su mayor parte por comunidadjoomla.org. Este manual es una
Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación
Práctica 1: Instalación de un servidor de aplicaciones web y diseño de la vista de una aplicación Sistemas de Información Grado de Informática Dpto. de Informática e Ingeniería de Sistemas, Universidad
Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.
Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra
Ejercicios de AJAX y REST
Índice 1 AJAX (1 punto)... 2 2 Servicios REST (1.5 puntos)... 3 3 Gestión de errores en servicios REST (0.5 puntos)...5 1. AJAX (1 punto) Vamos a cambiar la búsqueda de usuarios para que funcione mediante
MANUAL ECOMMERCE 2.0
MANUAL ECOMMERCE 2.0 1.- INTRODUCCIÓN Nuevas características añadidas al módulo: - Gestión de atributos de productos. - Gestión de cupones - Mejoras en métodos de envío - Descuentos a nivel de productos,
Práctica de introducción a
Práctica de introducción a XML El trabajo consiste en una introducción al uso del lenguaje XML y su aplicación en documentos y sistemas de caracteristicas multimedia. 1.- Qué es XML? XML (extensible Markup
Manual de usuario del Centro de Control
Manual de usuario del Centro de Control www.ximdex.com Tabla de contenidos 1. Centro de Control...4 2. Gestor de Canales...5 2.1. Añadir un nuevo canal...6 2.2. Modificar las propiedades del canal...6
Manual de rol gestor de GAV para moodle 2.5
Manual de rol gestor de GAV para moodle 2.5 Consultas LDAP-GAUR... 2 Buscar en LDAP datos de un usuario... 2 Docentes... 3 Buscar en GAUR datos de un docente... 3 Buscar en GAUR la docencia de un docente
Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL
Manual de usuario para Android de la aplicación PORTAFIRMAS MÓVIL Índice 1 Introducción... 5 1.1 Perfil de la aplicación... 5 1.2 Requisitos técnicos... 5 2 Manual de usuario... 7 2.1 Instalación del certificado...
Manual del Protocolo XML-RPC de Mensajería Negocios
Manual del Protocolo XML-RPC de Mensajería Negocios Índice de contenidos 1 INTRODUCCIÓN... 3 2 FUNCIONALIDADES DEL API DE COMUNICACIÓN XML-RPC... 4 2.1 Envío Libre... 4 2.2 Envío a Grupo de Contactos...
Práctica Java POJO de Integración de Sistemas Tienda de Comercio Electrónico
Práctica Java POJO de Integración de Sistemas Tienda de Comercio Electrónico Curso académico 2008-2009 1 Introducción La práctica de Integración de Sistemas consistirá en el diseño e implementación de
Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences
Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences Índice 1 Compartir datos entre actividades con Shared Preferences (0.75 puntos)... 2 2 Actividad de preferencias (0.75
Manual Oficina Web de Clubes - Federaciones Autono micas y Delegaciones
Manual Oficina Web de Clubes - Federaciones Autono micas y Delegaciones Este manual muestra el funcionamiento de una Federación Autonómica o Delegación en el uso de Intrafeb, todos los pasos que a continuación
Modulo 1 El lenguaje Java
Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto
Introducción a la Firma Electrónica en MIDAS
Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento
MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD
MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...
Sistema de Gestión Académica TESEO. Revisión 1.0. Servicio de Informática Área de Gestión (GESTIÓN DE RESÚMENES DE TESIS DOCTORALES)
Sistema de Gestión Académica TESEO (GESTIÓN DE RESÚMENES DE TESIS DOCTORALES) Revisión 1.0 Servicio de Informática Área de Gestión Mayo de 2004 INDICE INDICE... 1 1 Introducción... 1 2 Procedimiento....
MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES
MANUAL DE USUARIO DE LA HERAMIENTA CONFIGURACION DE PRESUPUESTOS PARA DISTRIBUIDORES Joma ha creado una herramienta con la cual, usted, como distribuidor, podrá generar presupuestos de las agrupaciones
Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.
Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.
JavaScript como Orientación a Objetos
Gustavo Lacoste ([email protected]) October 2012 Resumen El objetivo de las siguientes notas es generar una estructura en JavaScript que nos permita reutilizar de manera limpia las funciones creadas
Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario
Empleo de módulos y Procedimientos Procedimientos definidos por el usuario Según lo que hemos visto hasta ahora, Visual Basic, almacena el código en módulos. Hay tres clases de módulos: formularios (.frm),
Kaldeera Advanced Forms 2009 Guía del usuario
Kaldeera Advanced Forms 2009 Guía del usuario Indice Usando Kaldeera Advanced Forms 2009... 3 Accediendo a la página de configuración... 3 Activando o desactivando la funcionalidad de Kaldeera Advanced
MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS
MANUAL DE LA APLICACIÓN DE ENVÍO DE SMS SEGUIMIENTO DE VERSIONES Versión Novedades respecto a la versión anterior Fecha Versión 1.0 14/03/2011 Página 2 ÍNDICE ÍNDICE... 3 1. INTRODUCCIÓN... 4 2. MÓDULO
GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD
GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...
Partes de un programa en Java. A. Ejemplo de un Programa en Java /* Programa Ejemplo de Java: Muestra una Ventana Archivo: Ejemplo1.
Partes de un programa en Java A. Ejemplo de un Programa en Java /* class Ejemplo1 { //comienza la clase Ejemplo1. public static void main(string[] args) { // comienza el método main. JFrame miventana;
GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE
ÍNDICE ACCESO A LA APLICACIÓN... 2 1.- HOMOLOGACIÓN DE CURSOS... 4 1.1.- INICIAR EXPEDIENTE... 4 1.2.- CONSULTA DE EXPEDIENTES... 13 1.3.- RENUNCIA A LA HOMOLOGACIÓN... 16 2.- MECÁNICA DE CURSOS... 19
Manual de usuario investigador
Manual de usuario investigador Para poder solicitar un proyecto lo primero que tiene que hacer un investigador es iniciar sesión con su usuario en la web. Para ello debe pulsar en el icono situado en la
PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso
PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer
Apuntes de ACCESS. Apuntes de Access. Campos de Búsqueda:
Apuntes de ACCESS Campos de Búsqueda: Los campos de búsqueda permiten seleccionar el valor de un campo de una lista desplegable en lugar de tener que escribirlos. El usuario sólo tiene que elegir un valor
Curso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Traslado de Copias y Presentación de Escritos. Manual de Usuario V.3.1
Traslado de Copias y Presentación de Escritos Manual de Usuario V.3.1 Página: 2 45 INDICE INTRODUCCIÓN... 3 1 ACCESO A LA APLICACIÓN... 3 2 PROCESO DE FIRMA... 4 3 TRASLADOS PENDIENTES DE ACEPTAR POR EL
MANUAL DE AYUDA MODULO TALLAS Y COLORES
MANUAL DE AYUDA MODULO TALLAS Y COLORES Fecha última revisión: Enero 2010 Índice TALLAS Y COLORES... 3 1. Introducción... 3 CONFIGURACIÓN PARÁMETROS TC (Tallas y Colores)... 3 2. Módulos Visibles... 3
Manual Ingreso Notas y Acta Electrónica
Manual Ingreso Notas y Acta Electrónica ÍNDICE ÍNDICE 2 I. INTRODUCCIÓN 3 II. CREAR LA ESTRUCTURA DE NOTAS PARCIALES (OPCIÓN NOTAS NORMALES) _ 4 III. CREAR LA ESTRUCTURA DE NOTA FINAL (OPCIÓN NOTAS CALCULADAS)
Manual CMS Mobincube
Manual CMS Mobincube CMS Mobincube Qué es? El CMS (Sistema de Gestión de Contenidos) es un completo website que permite la creación y actualización de contenido remoto. De esta forma, una vez creada una
UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid
MANUAL DE EMPRESA Modo de entrar en ÍCARO Para comenzar a subir una oferta de empleo, el acceso es a través del siguiente enlace: http://icaro.uam.es A continuación, aparecerá la página de inicio de la
Centro de Capacitación en Informática
Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.
Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib
Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico
AGREGAR COMPONENTES ADICIONALES DE WINDOWS
INSTALACIÓN DE IIS EN WINDOWS XP El sistema está desarrollado para ejecutarse bajo la plataforma IIS de Windows XP. Por esta razón, incluimos la instalación de IIS (Servidor de Web) para la correcta ejecución
Tutorial: Primeros Pasos con Subversion
Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través
Guía rápida de la Oficina Virtual (Solicit@V5) Área Web y Administración Electrónica
Guía rápida de la Oficina Virtual (Solicit@V5) Área Web y Administración Electrónica HOJA DE CONTROL Título Nombre del Fichero Autores Guía rápida de la Oficina Virtual (Solicit@V5) UHU_GuiaRapidaSolicita_V5.pdf
Introducción... 2. Delicious... 2. Algunas características:... 2. Sitio para acceder a esta herramienta... 2. Qué es Delicious?...
Delicious Índice Introducción... 2 Delicious... 2 Algunas características:... 2 Sitio para acceder a esta herramienta... 2 Qué es Delicious?... 2 Tutorial Delicious... 3 Cómo guardar favoritos... 5 Otros
Programa. Conceptos básicos: variables, valores y objetos predefinidos, operadores, etc. etc. Callbacks, eval(), etc.
Programa Programa 1. Introducción. Repaso HTML-CSS. Orientaciones Generales. 2. Javascript: Qué es? Dónde se ejecuta? Cómo se ejecuta? Conceptos básicos: variables, valores y objetos predefinidos, operadores,
NOTIFICACIÓN DE MOVIMIENTOS DE ESTUPEFACIENTES POR PARTE DE LOS LABORATORIOS FARMACÉUTICOS Y ALMACENES MAYORISTAS DE DISTRIBUCIÓN
NOTIFICACIÓN DE MOVIMIENTOS DE ESTUPEFACIENTES POR PARTE DE LOS LABORATORIOS FARMACÉUTICOS Y ALMACENES MAYORISTAS DE DISTRIBUCIÓN GUÍA PARA LA PRESENTACIÓN DE NOTIFICACIONES Versión: 27/06/2012-1 ÍNDICE:
Servicio de Alta, Baja, Modificación y Consulta de usuarios Medusa
Documentos de Proyecto Medusa Documentos de: Serie: Manuales Servicio de Alta, Baja, Modificación y Consulta del documento: Fecha 22 de febrero de 2007 Preparado por: José Ramón González Luis Aprobado
Guía de instalación de la carpeta Datos de IslaWin
Guía de instalación de la carpeta Datos de IslaWin Para IslaWin Gestión CS, Classic o Pyme a partir de la revisión 7.00 (Revisión: 10/11/2011) Contenido Introducción... 3 Acerca de este documento... 3
Unidad II. - Las técnicas en las que se basó, las categorías de análisis o ejes centrales que permiten guiar el proceso de investigación.
Unidad II Metodología de Solución de Problemas 2.1 Descripción del problema (enunciado). Este aspecto nos indica describir de manera objetiva la realidad del problema que se esta investigando. En la descripción
MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO
MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS HERRAMIENTA DE APROVISIONAMIENTO... 3 1. QUÉ ES LA HERRAMIENTA DE APROVISIONAMIENTO... 3 HERRAMIENTA
Guía de usuario para el acceso al recibo de nómina mediante la intranet de la Conselleria
Guía de usuario para el acceso al recibo de nómina mediante la intranet de la Conselleria Estado actual Estado V1.3 Fecha modificación 4/6/2012 Autor Dirigido a Ubicación/URL Empleados de la Agencia Valenciana
Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos
Práctica 2: Instalación de un gestor de bases de datos relacionales y desarrollo de una aplicación Web con persistencia de datos Sistemas de Información Grado de Informática Dpto. de Informática e Ingeniería
port@firmas V.2.3.1 Manual de Portafirmas V.2.3.1
Manual de Portafirmas V.2.3.1 1 1.- Introducción 2.- Acceso 3.- Interfaz 4.- Bandejas de peticiones 5.- Etiquetas 6.- Búsquedas 7.- Petición de firma 8.- Redactar petición 9.- Firma 10.- Devolución de
ESOFT 3 Nice Screen Scraper: Web service, Console client and Web client
ESOFT 3 Nice Screen Scraper: Web service, Console client and Web client Héctor López Sacanell [email protected] 15 de enero de 2010 1. Introducción El objetivo de esta tercera entrega es la de crear
PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet. Revisión 1.1 Fecha 2006-08
PANEL DE CONTROL (Zona de Administración) MANUAL DE USO Por conexanet Revisión 1.1 Fecha 2006-08 Índice 1. Acceder 2. Menú 3. Gestión Básica 3.1 Añadir 3.2 Editar 3.3 Eliminar 3.4 Eliminación de registros
Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable
Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable 1. Introducción. El Sistema de Administración de Información de un Negocio Franquiciable (SAINF)
CREACIÓN Y CONFIGURACIÓN DE WIKIS
Paso 1: Creación CREACIÓN Y CONFIGURACIÓN DE WIKIS Como con el resto de actividades, para crear un wiki lo primero es activar el modo de edición y seleccionar la opción Wiki de la lista desplegable Agregar
Requisitos. Universidad ORT Arquitectura de Software
Requisitos Java Development Kit (JDK) 1.5 o superior NetBeans IDE 6.5 o superior JBoss Application Server 4.2.x o 5.x.x Variable de entorno JAVA_HOME apuntando al directorio de instalación de la JDK 1
Gestión de Retales WhitePaper Noviembre de 2009
Gestión de Retales WhitePaper Noviembre de 2009 Contenidos 1. Introducción 3 2. Almacén de retales 4 3. Propiedades de los materiales 6 4. Alta de retales 8 5. Utilización de retales en un lote de producción
REGISTRO DE DOMINIOS CONECTIVIDAD ADSL HOSTING COMPARTIDO RED CORPORATIVA VPN SOPORTE TECNICO PROFESIONAL
Configuración del Filtro de Spam o correo basura Qué es el spam o correo basura? Cómo accedo al panel de control? Configurando el Filtro de Spam o Activar el filtro o Establecer el ajuste de aciertos o
Capitulo 5. Implementación del sistema MDM
Capitulo 5. Implementación del sistema MDM Una vez que se concluyeron las actividades de análisis y diseño se comenzó la implementación del sistema MDM (Manejador de Documentos de MoProSoft). En este capitulo
Tema 4: Diseño e Implementación de la Capa Web
Tema 4: Diseño e Implementación de la Capa Web Índice 4.1 Tutorial de Servlets y JSPs 4.2 Tutorial de Tapestry 4.3 Caso de Estudio: Diseño e Implementación de la Capa Web de MiniBank 4.4 Caso de estudio:
Manual de Usuario de la Herramienta SICRES-Tester. SIR Sistema de Interconexión de Registros. Tipo de documento. Fecha de entrega 08/04/2014
MINISTERIO DE HACIENDA Y ADMINISTRACIONES PÚBLICAS SECRETARÍA DE ESTADO DE ADMINISTRACIONES PÚBLICAS DIRECCIÓN GENERAL DE MODERNIZACIÓN ADMINISTRATIVA, PROCEDIMIENTOS E IMPULSO DE LA ADMINISTRACIÓN ELECTRONICA
GENERACIÓN DE TRANSFERENCIAS
GENERACIÓN DE TRANSFERENCIAS 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que la Caja efectúe transferencias, creando una base
Ejercicio 1 (3 puntos).-
URJC Ingeniería Técnica de Gestión Abril 2011 Asignatura: SOFTWARE AVANZADO Normas: La prueba consta de 2 ejercicios. La máxima nota del examen es un 8. Siendo la práctica la que añade los 2 puntos que
HOOTSUITE: GESTOR DE CUENTAS EN REDES SOCIALES
HOOTSUITE: GESTOR DE CUENTAS EN REDES SOCIALES Índice del curso 1. HootSuite Qué es?... 3 QUÉ ES?... 3 2. HootSuite Por qué?... 5 POR QUÉ?... 5 3. Registro... 6 REGISTRO... 6 4. Interfaz... 7 INTERFAZ...
Operación Microsoft Access 97
Trabajar con Controles Características de los controles Un control es un objeto gráfico, como por ejemplo un cuadro de texto, un botón de comando o un rectángulo que se coloca en un formulario o informe
!"!#!$%&'(!)$% )*+%*)!,$&%-*. +!/*(01*2
!"!#!$%&'(!)$% )*+%*)!,$&%-*. +!/*(01*2 45%!",&$)6##!7" Con el editor web LivePages de tu paquete Conecta tu Negocio podrás crear tu propia página web y publicarla en Internet sin necesidad de conocimientos
Manual de Integrador.NET
Manual de Integrador.NET viafirma platform v3.5 ÍNDICE 1. INTRODUCCIÓN... 5 1.1. Objetivos... 5 1.2. Referencia... 5 2. GUÍA RÁPIDA... 5 2.1. Añadir las dependencias necesarias... 5 2.2. Página de acceso
Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento
Qué es AT-Encrypt nos permitirá dotar de contraseña a cualquier documento o carpeta. Este documento o carpeta sólo será legible por aquel que conozca la contraseña El funcionamiento del cifrado (o encriptación)
NOTAS TÉCNICAS SOBRE EL SIT: Comunicados (II)
NOTAS TÉCNICAS SOBRE EL SIT: Comunicados (II)... 2 Qué son y para qué sirven los modelos HTML... 2 Creación de un modelo HTML... 3 por defecto... 6 Enviar documentos basados en modelos HTML... 7 Envíos
AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL DE MEDICAMENTOS DE USO HUMANO GUÍA PARA LA SOLICITUD DE UNA AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL
AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL DE MEDICAMENTOS DE USO HUMANO GUÍA PARA LA SOLICITUD DE UNA AUTORIZACIÓN DE COMERCIALIZACIÓN EXCEPCIONAL Versión: 20/10/2008-1 - ÍNDICE 1 Descripción general
- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD. Rev. 01- FEBRERO 2013
- MANUAL TÉCNICO - Software de diagnóstico de la seguridad de la información y autoimplantación de LOPD Rev. 01- FEBRERO 2013 Software de diagnóstico de la seguridad de la información y autoimplantación
Plataforma e-ducativa Aragonesa. Manual de Administración. Bitácora
Plataforma e-ducativa Aragonesa Manual de Administración Bitácora ÍNDICE Acceso a la administración de la Bitácora...3 Interfaz Gráfica...3 Publicaciones...4 Cómo Agregar una Publicación...4 Cómo Modificar
Ejercicios de validación e internacionalización
Ejercicios de validación e internacionalización Índice 1 Conversión y formateo de datos (0.5 puntos)...2 2 Validación (1.5 puntos)... 2 3 Internacionalización (1 punto)...3 En las plantillas de la sesión
Manual de Uso XML-Whois de Neubox. Manual del Sistema de XML Whois de Neubox Versión 9.12.4
Manual del Sistema de XML Whois de Neubox Versión 9.12.4 1 Índice Sección Página I. Introducción........ 3 II. Contenido del paquete............ 4 III. Instalación y uso....... 5 1. Cómo comprobar la plantilla......
Capitulo III. Diseño del Sistema.
Capitulo III. Diseño del Sistema. Para el desarrollo del sistema en la presente tesis se utilizo el paradigma orientado a objetos utilizando el lenguaje Java en su versión 1.2. Por medio de este lenguaje
Región de Murcia Consejería de Educación, Ciencia e Investigación. Manual Usuario FCT
. Manual Usuario FCT Murcia, 9 de Julio de 2007 Manual de Usuario FCT v1.0 pág. 2 de 73 ÍNDICE Manual Usuario FCT...1 1. Tipos de usuarios... 4 2. Modelo de navegación... 5 3. Servicios... 6 3.1. Convenios...
Introducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
Guía Notas Parciales. Intermedio
Guía Notas Parciales Intermedio ÍNDICE I. INTRODUCCIÓN 3 II. CREAR LA ESTRUCTURA DE NOTAS PARCIALES (OPCIÓN NOTAS NORMALES) 4 III. CREAR LA ESTRUCTURA DE NOTA FINAL (OPCIÓN NOTAS CALCULAS) 6 IV. INGRESAR
Manual de uso. Manual de uso - citanet 1
Manual de uso Manual de uso - citanet 1 1. Requisitos previos a la instalación... 3 2. Primer inicio de la aplicación.... 3 2.1. Pantalla de inicio de sesión.... 3 2.2. Datos de la empresa y configuración
Manual SSO Avant2. www.avant2.es [email protected] Última revisión: 02/05/2013. Copyright Codeoscopic S.A.
Manual SSO Avant2 www.avant2.es [email protected] Última revisión: 02/05/2013 Copyright Codeoscopic S.A. Este documento es propiedad y copyright de Codeoscopic SA, y su contenido es confidencial. Este
SMS Gestión. manual de uso
SMS Gestión manual de uso índice qué es SMS Gestión 2 acceso al servicio 3 01 acceso con la clave de servicios de Orange 4 02 acceso personalizado 6 02.1 cómo personalizar su acceso a la aplicación 7 02.2
Trey-SAT Pag. 1. Manual de usuario
Trey-SAT Pag. 1 Manual de usuario Trey-SAT Pag. 2 Modulo SAT : Servicio de asistencia técnica TREY-SAT es un potente módulo para el servicio de asistencia técnica, completamente integrado a la Gestión
MANUAL DE USUARIO. Se deben seguir los siguientes pasos para la correcta instalación del módulo descargable:
MANUAL DE USUARIO La aplicación para la convocatoria Parques Científicos y Tecnológicos consta de un programa descargable más un módulo web. Mediante el módulo descargable, es posible cumplimentar todos
MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)
MANUAL DE AYUDA SAT Móvil (Movilidad del Servicio Técnico) Fecha última revisión: Abril 2015 INDICE DE CONTENIDOS INTRODUCCION SAT Móvil... 3 CONFIGURACIONES PREVIAS EN GOTELGEST.NET... 4 1. INSTALACIÓN
Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008
Listados y Etiquetas personalizados de PrefGest WhitePaper Julio 2008 Contenidos 1. Propósito 3 2. Introducción 4 3. Listados personalizados 5 3.1. Ejemplos prácticos 7 3.2. Consideraciones adicionales
ÍNDICE 1 DESCRIPCIÓN 3 2 OPERATIVA DE LA FUNCIÓN 3 3 REGISTRO DE FACTURAS 4 4 REGISTRO MASIVO DE FACTURAS 10
AUTOREGISTRO FACTURAS POR INTERNET MANUAL DE USUARIO Registro de facturas Registro facturas.doc 2 de 14 26/09/2003 ÍNDICE 1 DESCRIPCIÓN 3 2 OPERATIVA DE LA FUNCIÓN 3 3 REGISTRO DE FACTURAS 4 3.1 Pantalla
