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

lunes, 25 de febrero de 2013

html:href .vs. a href

Problema:  Queremos llamar desde una jsp a un action de struts.
Posibilidades:  Usar una etiqueta "a" de html o usar una etiqueta "Conclusión:  Mejor usar la de Struts, puesto que relativiza y puedes llamar a un action sin .do y sin tener en cuenta dónde desde dónde haces la llamada.  Peor si quieres imprimir varios parámetros o usar el <bean:write>


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

    pageEncoding="ISO-8859-1"%>

    <%@page import="vo.PostVO" %>

    <%@page import="java.util.LinkedList" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>

<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<html>

<head>

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

<title></title>

</head>

<body>

<logic:iterate name="listaPost"  scope="session" id="post" >

    <bean:write property="titulo" name="post"/>

    <bean:write property="descripcion" name="post"/>

    <bean:write property="fecha" name="post"/>

    <a href="postAction.do?method=detallesPost&id=<bean:write property="id" name="post"/>">Más detalles...</a></br></br>

</logic:iterate> 
 
 
<!--


OPCIÓN 1:

con a href, debo buscar la ruta relativa y colocar el .do 

--> 
 <a href="../crearPost.do">Crear nuevo Post</a>
 
 
<!--

OPCIÓN 2:con html:link, no es necesario colocar .do ni las relativas

-->  


 <html:link action="crearPost">Crear nuevo Post versión pro</html:link> 
 
<!--


OPCIÓN 3:con html:link, pasándole un parámetro ID, donde adquiere el valor que tendrá la propiedad id dentro del form llamado post

http://localhost:8080/nombre_proyecto/crearPost.do?method=crear&titulo=4&ID=2

--> 

 
 <html:link action='crearPost?method=crear&titulo=4' paramName="post" 
paramProperty="id" paramId="ID" >Crear nuevo Post versión pro</html:link>



</body>

</html>






jueves, 6 de septiembre de 2007

mostrar lista de radio y de checkbox en una jsp siendo válida xhtml

Para checkbox usando una lista de PropertyBean metida en sesión. Obviar los estilos.
Notas: "IDIOMAS" podría estar en una clase SessionKey y luego llamarla con scriptles.
Sustituir "MENOR" por "<" y "MAYOR" por ">"
Quitar los espacios luego del "<"



< c:set var="jTab" value="347" scope="session"/> <%-- es el orden de tabulación del punto anterior--%>
< logic:iterate name="IDIOMAS" id="idioma">
< c:set var="jTab" value="${jTab+1}" scope="session"/>
< c:set var="identificadorIdioma" scope="session">
< div class="clearBoth">
< label for ="MENOR % =(String)request.getSession().getAttribute("identificadorIdioma") % MAYOR" >
< html:multibox property="myNotification.idiomasId" styleId='MENOR%=(String)request.getSession().getAttribute("identificadorIdioma") %MAYOR' tabindex='MENOR%=request.getSession().getAttribute("jTab") %MAYOR' >< bean:write name='idioma' property="value"/>
< bean:write name="idioma" property="label"/>
< /label>
< /div>
< /logic:iterate>




2.-Ejemplo para radio. Es el típico para escoger el sexo. Tendría un ActionForm llamado "miForm" con una propiedad "sexo". También se hace uso de un par de etiquetas del ApplicationResources para mostrar los textos.


< label for="sex.man">
< html:radio name="miForm" property="sexo" styleId="sex.man" value="hombre" >
< /html:radio>
< bean:message key="etiqueta.sexo.hombre" />
< /label>

< label for="sex.woman">
< html:radio name="miForm" property="sexo" styleId="sex.woman" value="mujer">
< /html:radio>
< bean:message key="etiqueta.sexo.mujer" />
< /label>

jueves, 22 de marzo de 2007

Imprimir excepciones en código de jsp

Problema: Cuando una jsp nos está generando un error, y queremos saber cuál es, pero no mostrárselo al usuario.

Solución: (Quitar los espacios después de los '<')

Agregar en una tile, el pie siguiente...o colocar el código correspondiente en cada jsp que queramos lo planteado.


< %@ page isErrorPage="true" %>
< %@ taglib uri="http://jakarta.apache.org/struts/tags-bean" prefix="bean" %>
< %@ taglib uri="http://jakarta.apache.org/struts/tags-html" prefix="html" %>

< !--
Información de errores JSP

< % if (exception != null) { %>
< pre><% exception.printStackTrace(new java.io.PrintWriter(out)); %>< /pre>
< % } else { %>
No hay ninguna excepcion visible, chequea los logs en busca del error
< % } %>
-->

miércoles, 21 de marzo de 2007

Confirmación de cancelar usando js

Problema:
Quiero que al pulsar un botón que en mi aplicación sirve para cancelar, me salga un popup para confirmar que lo deseo hacer.

Solución:
1.-Agrego una función javascript

/**
* Función para confirmar la cancelación de trámite
*/
function confirmCancel()
{
var message = "Ha seleccionado cancelar el proceso de solicitud que esta realizando.\n"
+ "?Desea cancelar realmente el proceso de solicitud?";
if (window.confirm(message))
{
document.forms[0].submit();
}
else
{
return (false);
}
}


2.-Hago la llamada de la función en mi botón (en mi caso es un html:submit, pero podría hacerse en el input de tipo submit normal y corriente), en el onclick: (quitar los espacios luego del <)



< html:submit property="buttons[14]"
altKey="boton.cancelar"
titleKey="boton.cancelar"
onclick="return confirmCancel();">

< /html:submit>

lunes, 19 de marzo de 2007

Displaytag: Ordenando columna por fecha

Si tenemos una tabla de la displaytag, en la que quiero que una columna ordene por fecha es algo más complicado que lo que se suele hacer, ya que, normalmente ordena alfanuméricamente.

Solución (Ordena por dd/MM/yyyy):

1.-Agrego la fecha, e indico el decorador que usa.

< display:table name="sessionScope.miLista"
align="center"
id="elemento"
pagesize="10"
export="false"
requestURI="../../action/citizen/MiAction?method=miMetodo">


< display:column titleKey="fechaConvocatoria"
property="fecha"
sortable="true"
decorator="es.miproyecto.web.view.DateColumnDecorator"/>
< /display:table>



2.-Agrego la clase java correspondiente al decorador.

package es.princast.personalSelection.web.view;

import java.text.SimpleDateFormat;
import java.util.Date;
import org.displaytag.decorator.ColumnDecorator;
import es.princast.personalSelection.util.DateDecorator;

/**
* Decorador para formatear la fecha en la tabla de listado
*
*/
public class DateColumnDecorator implements ColumnDecorator
{

/**
* Formateador de la fecha
*/
private SimpleDateFormat dateFormat = new SimpleDateFormat( "dd/MM/yyyy" );

/**
* Transformamos la reprentacion actual de la fecha en un string
*
* @param columnValue Object, el objeto date
*
* @return String value, el objeto string
*/
public final String decorate(Object columnValue)
{
if (columnValue!=null){
Date date = (Date) columnValue;
return this.dateFormat.format(date);
}else{
return new String("");
}
}
}

miércoles, 14 de marzo de 2007

XML y XSL con oc4j10

Bien, para hacer un xml con su xsl en oc4j (10 en mi caso), seguí las instrucciones de la página oficial...
instrucciones oficial

...sin embargo, resumo lo que entienden ahí como que 'todo el mundo lo sabe' y sino manuales y manuales.

1.-Agrega los jars que te indica en la página oficial en tu classpath:
a.-ojsputil.jar (está en oc4j\j2ee\home\jsp\lib\taglib)
b.-xmlparserv2.jar (está en oc4j\lib)
c.-xsu12.jar (está en oc4j\lib)

2.-En tu oc4j tienes los ejemplos que te ponen en la página, en la dirección:
oc4j\j2ee\home\demo\jsp\build\web\ojspdemos-web\jsp\xml . Así que con copiar y pegar en tu aplicación vale.

3.-La taglib uri de hello.xml cámbiala y coloca la siguiente:

<% @ taglib uri="/WEB-INF/tld/xml.tld" prefix="xml" %>

3.-En el web.xml de tu aplicación coloca, en la zona de los taglibs:

< taglib>
< taglib-uri>/WEB-INF/tld/xml.tld
< taglib-location>/WEB-INF/tld/xml.tld
< /taglib>

4.-Del jar ojsputil.jar que antes agregaste, extrae la xml.tld que está dentro de META-INF. Agrega esa tld en tu proyecto, en la ruta (location) indicada en el web.xml, que en este caso es /WEB-INF/tld/xml.tld .

5.-Arranca la jsp de hello.jsp y ¡LISTO!.

miércoles, 7 de marzo de 2007

Repopulando html:checkbox

Imaginemos que tengo 2 pantallas, la 1ra. de un formulario, y la siguiente, donde se presentan los datos introducidos en la primera.
En la 2da. tengo un check que puedo marcar o desmarcar, y lo que quiero es, que si vuelvo a la 1ra. se me quede almacenado lo que tengo en el check.
Puede haber otra solución, como recomiendan en la documentación del taglib, que sea poner en el reset el valor a false, pero esto no funciona si tengo varios botones en la página que redirigen a sitios distintos.

Solución:
1.- En el Form asociado tengo un atributo de tipo boolean, que en este caso llamo clausulas, con su respectivos getter y setter. Por defecto, quiero que aparezca marcado, con lo cual, coloco = true en su declaración.
2.- En la página de los datos, pongo el checkbox.
3.- Coloco también un atributo oculto con el mismo nombre que la propiedad y el valor de false. Si se desmarca el checkbox se envía el false, y si está marcado, se envía el true del checkbox.