[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 
Mudar input  XML
Forum Index -> Comentários Gerais Go to Page: 1, 2 Next 
Author Message
robertwgil


[Avatar]
Joined: 23/02/2007 17:22:13
Messages: 745
Location: São Paulo - SP - Brasil
Offline

Pessoal, estou com uma dúvida aqui que pode ser legal constar no
histórico do forum, seguinte,

nas actions eu uso o input.getStringValue('key') para pegar os parametros
do tipo String, até ai tudo bem, porém meu banco de dados suporta apenas
ISO-8859-1, e os usuários estão dando CTRL+C em textos do m$ word que
estão em UTF-8, e isso acarreta em um erro. oque eu preciso fazer é o
seguinte,

Toda vez que eu fizer um input.getStringValue('key'); esse executa
esse código:
Code:
 return new String( value.getBytes(), Charset.forName("ISO-8859-1"));
 

Ou seja, converter sempre para ISO-8859-1, sei que posso extender alguma
classe e sobreescrever o método. porém não sei qual a implementação
e não sei onde eu seto que quero usar a minha implementação e não
a default do Menta.

Podem me dar uma ajuda?

Robert Gil
Coordenador de Desenvolvimento / Administrador de Redes.

Twitter
[Email] [MSN]
robertwgil


[Avatar]
Joined: 23/02/2007 17:22:13
Messages: 745
Location: São Paulo - SP - Brasil
Offline

Estive olhando, terei que sobreescrever o metodo

getStringValue do RequestInput e o

prepareAction da classe Controller
para utilizar a classe que eu criar extendendo RequestInput.

É isso mesmo? ou há alguma forma melhor?


Robert Gil
Coordenador de Desenvolvimento / Administrador de Redes.

Twitter
[Email] [MSN]
robertwgil


[Avatar]
Joined: 23/02/2007 17:22:13
Messages: 745
Location: São Paulo - SP - Brasil
Offline

Bom fiz da seguinte forma?
Code:
 public class ControllerMaringa extends Controller {
 
 	@Override
 	protected void prepareAction(Action action, HttpServletRequest req,
 			HttpServletResponse res) {
 	
 		action.setInput(new RequestInputMaringa(req));
 		
         action.setOutput(new ResponseOutput(res));
         action.setSession(new SessionContext(req, res));
         action.setApplication(appContext);
         action.setCookies(new CookieContext(req, res));
         action.setLocale(LocaleManager.getLocale(req));
         
 		
 	}
 	
 }
 


Code:
 public class RequestInputMaringa extends RequestInput {
 
 	public RequestInputMaringa(HttpServletRequest req) {
 		super(req);
 	}
 
 
 	/**
 	 * If the parameter is not a String, its toString() method is called.
 	 */
 	public String getStringValue(String name) {
 		Object o = map.get(name);
 		return (o != null ? new String( o.toString().getBytes(), Charset.forName("ISO-8859-1")) : null);
 	}
 
 }
 


Code:
 <servlet>
 	<servlet-name>Controller</servlet-name>
 	<servlet-class>mentawai.ControllerMaringa</servlet-class>
 	<load-on-startup>1</load-on-startup>
 </servlet>
 

Robert Gil
Coordenador de Desenvolvimento / Administrador de Redes.

Twitter
[Email] [MSN]
ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

A sua solução é boa. Mas pare evitar tanta dor de cabeça pra fazer isso, poderia ser usado o mesmo modelo da resposta (AjaxConsequence.DEFAULT_CHARSET)
Poderia ter então um: Controller.DEFAULT_CHARSET ou Input.DEFAULT_CHARSET, dando assim liberdade poder configurar.

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
robertwgil


[Avatar]
Joined: 23/02/2007 17:22:13
Messages: 745
Location: São Paulo - SP - Brasil
Offline

É verdade,
O que acha Serjão?

Robert Gil
Coordenador de Desenvolvimento / Administrador de Redes.

Twitter
[Email] [MSN]
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline


Acho uma boa, pode fazer! Tomando cuidado para deixar tudo backwards compatible...

-Sergio

Sergio Oliveira

robertwgil


[Avatar]
Joined: 23/02/2007 17:22:13
Messages: 745
Location: São Paulo - SP - Brasil
Offline

In SVN.

Code:
 Index: Controller.java
 ===================================================================
 --- Controller.java	(revision 1253)
 +++ Controller.java	(working copy)
 @@ -88,7 +88,14 @@
      private static final String STICKY_KEY = "_stickyActions";
      
      private static final String[] APP_MGR_NAMES = { "ApplicationManager", "AppMgr", "AppManager" };
 +    
 +    
 +    /**
 +     * Default charset for input.getStringValue and getStringValues
 +     */
 +    public static String DEFAULT_CHARSET = null;
  
 +    
      /**
       * Initialize the Controller, creating and starting the ApplicationManager.
       *
 


Code:
 Index: RequestInput.java
 ===================================================================
 --- RequestInput.java	(revision 1253)
 +++ RequestInput.java	(working copy)
 @@ -19,6 +19,7 @@
  package org.mentawai.core;
  
  import java.lang.reflect.Method;
 +import java.nio.charset.Charset;
  import java.util.Collection;
  import java.util.HashMap;
  import java.util.HashSet;
 @@ -195,8 +196,20 @@
  	 * If the parameter is not a String, its toString() method is called.
  	 */
  	public String getStringValue(String name) {
 +		
  		Object o = map.get(name);
 -		return (o != null ? o.toString() : null);
 +		
 +		if( o == null )	{
 +			return null;
 +			
 +		} else {
 +			return ( Controller.DEFAULT_CHARSET == null ? 
 +															o.toString()
 +													    :
 +													    	new String( o.toString().getBytes(), Charset.forName( Controller.DEFAULT_CHARSET )) );
 +			
 +		}
 +			
  	}
  
  	/**
 @@ -208,12 +221,20 @@
  		Object obj = map.get(name);
  		if (obj == null)
  			return null;
 +		
  		if (obj instanceof String[]) {
  			return (String[]) obj;
 +			
  		} else if (obj instanceof String) {
  			String[] s = new String[1];
 -			s[0] = (String) obj;
 +			
 +			s[0] = ( Controller.DEFAULT_CHARSET == null ?
 +															obj.toString()
 +														:
 +															new String( obj.toString().getBytes(), Charset.forName( Controller.DEFAULT_CHARSET )) );
 +			
  			return s;
 +			
  		}
  		throw new InputException("Error trying to get a String []: " + name);
  	}
 
 

Robert Gil
Coordenador de Desenvolvimento / Administrador de Redes.

Twitter
[Email] [MSN]
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline


Parece certinho. Já comitou ?


Sergio Oliveira

robertwgil


[Avatar]
Joined: 23/02/2007 17:22:13
Messages: 745
Location: São Paulo - SP - Brasil
Offline

Sim.

Robert Gil
Coordenador de Desenvolvimento / Administrador de Redes.

Twitter
[Email] [MSN]
IceW0lf


[Avatar]

Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline

Tava falando sobre isso com o Diego hj.... isso ja esta no beta ?

Leiber Wallace
Voixy ::: Soluções em Telecomunicações
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline


Já está no beta...

Sergio Oliveira

ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

Opa só uma pequena dica. ACHO que isso ficaria melhor: Input.DEFAULT_CHARSET

Por que ?
Por eu estou querendo mudar a codificação do Input não é ? Se eu colocar isso no Controller vai dar a impressão que é a codificação geral, entrada e saida... ne verdade ?

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
saoj



Joined: 01/07/2005 09:59:17
Messages: 2846
Location: Rio de Janeiro, RJ
Offline

Mudei para o Input conforme sugestão...

No beta...

Sergio Oliveira

ricardojlrufino


[Avatar]

Joined: 30/03/2008 20:07:28
Messages: 227
Location: Teresina PI
Offline

Valeu serjão ... desculpa pelo incomodo ... hehehe

Ricardo JL Rufino <ricardo.jl.rufino@gmail.com> < UNYK > :: Q4Soft :: Teresina - PI
"Existe apenas um bem, o saber, e apenas um mal, a ignorância" - Sócrates
"Devemos julgar um homem mais pelas suas perguntas que pelas respostas" - Voltaire




Mentawai Developer

[WWW] [MSN]
IceW0lf


[Avatar]

Joined: 16/03/2006 08:33:38
Messages: 1546
Location: Brasília
Offline

Então....

Como que ficou o uso do indivíduo?

Leiber Wallace
Voixy ::: Soluções em Telecomunicações
 
Forum Index -> Comentários Gerais Go to Page: 1, 2 Next 
Go to:   
Powered by JForum 2.1.6 © JForum Team