Ver Mensaje Individual
  #6 (permalink)  
Antiguo 02/12/2005, 17:40
axz
 
Fecha de Ingreso: mayo-2005
Mensajes: 360
Antigüedad: 21 años, 4 meses
Puntos: 10
Respuesta

bien, creo que nadie no muchos han contestado a esta pregunta y aunque me llevó un buen ratote de investigar y destazar las clases ... por fín lo logré ... y por si en algún momento a alguien le es necesario hacerlo ...

Código PHP:
package utiles.Util;

import org.apache.struts.taglib.bean.MessageTag;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspException;
import org.apache.struts.util.RequestUtils;
import org.apache.struts.util.ResponseUtils;

/**
 * A diferencia de su superclase ... permite imprimir el valor del tag <bean:message key="a.b" />
 * con solo enviar el valor de la clave como parámetro, además permite guardar el contenido de dicho
 * tag en una variable.
 * @author Aristóteles Quintanar Ramos.
 */
public class BeanMessage extends MessageTag
{
  public 
String mensaje = "";

  
/**
   * CONSTRUCTOR ... instancía el objeto.
   * @param pageContext - Objeto de tipo PageContext que hace referencia a la página actual.
   */
  
public BeanMessage( PageContext pageContext )
  {
    
super();
    
this.setPageContext( pageContext );
  }
  
  
/**
   * Realiza la misma acción que al llamar al tag <bean:message key="a.b" />.
   * @throws javax.servlet.jsp.JspException
   * @param clave String - Contendría la clave <i>a.b</i>.
   */
  
public void ImprimeBeanMessage( String clave ) throws JspException
  
{
    
CreaBeanMessage( clave, true );
  }
  
  
/**
   * Obtiene el valor del tag <bean:message key="a.b" /> sin imprimirlo en pantalla.
   * @throws javax.servlet.jsp.JspException
   * @return String - Valor traducido del tag <bean:message ...
   * @param clave String - valor que se pasa como parámetro (<i>a.b</i>) al tag
   *        <bean:message key="a.b" />
   */
  
public String DevuelveBeanMessage( String clave ) throws JspException
  
{
    return( 
CreaBeanMessage( clave, false ) );
  }
  
  
/**
   * Obtiene el valor del tag <bean: message key="a.b" />, la impresión o no impresión en pantalla
   * del valor devuelto dependerá del valor del parámetro <i>imprime</i>.
   * @throws javax.servlet.jsp.JspException
   * @return String con el valor traducido del tag <bean:message ... independientemente del parámetro
   *         <i>imprime</i>.
   * @param imprime boolean - Indica si se imprimirá o no en pantalla el valor devuelto por el tag
   *        <bean:message ...
   * @param clave String - Valor pasado como parámetro al tag en el atributo <i>key</i>.
   */
  
private String CreaBeanMessage( String clave, boolean imprime ) throws JspException
  
{
    
this.setKey( clave );
    
this.doStartTag( imprime );
    
this.release();
    
    return 
this.mensaje;
  }
  
  
/**
   * Realiza exatamente lo mismo que la función doStartTag de la superclase, con la diferencia de que
   * la impresión o no impresión en pantalla del valor devuelto por el tag <bean:message key="a.b" />
   * dependerá del valor del parámetro <i>imprime</i>.
   * @throws javax.servlet.jsp.JspException
   * @return int - Devuelve el control a la página actual.
   * @param imprime boolean - Indica si el valor devuelto por el tag se imprimirá o no en pantalla.
   */
  
private int doStartTag( boolean imprime ) throws JspException
  
{
    
String key = this.key;
    if( 
key == null )
    {
      
Object value = RequestUtils.lookup( pageContext, name, property, scope );
      if( 
value != null && !( value instanceof String ) )
      {
        
JspException e = new JspException( messages.getMessage( "message.property", key ) );
        
RequestUtils.saveException( pageContext, e );
        throw 
e;
      }
      
key = ( String )value;
    }
    
    
Object args[] = new Object[ 5 ];
    
args[ 0 ] = arg0;
    
args[ 1 ] = arg1;
    
args[ 2 ] = arg2;
    
args[ 3 ] = arg3;
    
args[ 4 ] = arg4;
    
    
String message = RequestUtils.message( pageContext, this.bundle, this.localeKey, key, args );
    if( 
message == null )
    {
      
JspException e = new JspException( messages.getMessage( "message.message", "\"" + key + "\"" ) );
      
RequestUtils.saveException( pageContext, e );
      throw 
e;
    }

    
this.mensaje = message;
    if( 
imprime )
    {
      
// Print the retrieved message to our output writer
      
ResponseUtils.write( pageContext, message );
    }

    return( 
SKIP_BODY );
  }
} 
y la forma de usarla desde un .jsp


Código PHP:
<%@ page import="utiles.Util.BeanMessage" %>
<%
BeanMessage mensajes = new BeanMessage( pageContext );
mensajes.ImprimeBeanMessage( "all_forms.code" );

String valor = mensajes.DevuelveBeanMessage( "all_forms.exit" );
%>
<%= 
valor %> 
ojalá le sirva a alguien ... saludos

Última edición por axz; 25/07/2006 a las 19:17 Razón: se me fué el dedo