[Logo] Mentawai Forum - Mentawai Web Framework
  [Search] Search   [Recent Topics] Recent Topics   [Members]  Member Listing   [Groups] Back to home page 
[Register] Register / 
[Login] Login 

Forum Read-Only! Check the new site and forum here!

Messages posted by: demi  XML
Profile for demi -> Messages posted by demi [5]
Author Message
Sergio

Teria que trocar também os caracteres [<], [>] e [&]. E fazer o mesmo com a tag textarea.

Obrigado.

Como referência:
When to use escapes: http://www.w3.org/International/tutorials/tutorial-char-enc/#Slide0460
Muito bom, um dia alguem vai precisar disso como eu precisei e vai achar esse tópico 


Realmente! Estava com esse problema e achei esse tópico.

Embora eu tenha achado uma alternativa com o uso de um Filtro (código a seguir), eu acredito que isso deva ser tarefa do Framework e não do programador, filtrando diretamente nas tags como sugeriu o Leandro. No meu caso uso mime "application/xhtml+xml" e isso gera um erro fatal (de XML mal formatado) no Firefox.

No meu código ele converte tudo que tiver na input e na output.

Code:
 import org.mentawai.core.Filter;
 import org.mentawai.core.Input;
 import org.mentawai.core.InvocationChain;
 import org.mentawai.core.Action;
 import org.mentawai.core.Output;
 
 import org.apache.commons.lang.StringEscapeUtils;
 
 public class MentaFilter implements Filter {
 
 	public static void escapeOutput(Output output) {
 		Iterator<String> it = output.keys();
 		while(it.hasNext()) {
 			String key = it.next();
 			Object value = output.getValue(key);
 			if (value instanceof String) {
 				output.setValue(key, StringEscapeUtils.escapeHtml((String)value));
 			}
 		}
 	}
 	
 	public static void escapeInput(Input input) {
 		Iterator<String> it = input.keys();
 		while(it.hasNext()) {
 			String key = it.next();
 			Object value = input.getValue(key);
 			if (value instanceof String) {
 				input.setValue(key, StringEscapeUtils.escapeHtml((String)value));
 			}
 		}
 	}
 	
 	@Override
 	public String filter(InvocationChain chain) throws Exception {
         Action action = chain.getAction();
         String result = chain.invoke();
         
         escapeOutput(action.getOutput());
         escapeInput(action.getInput());
         
         return result;
 	}
 }
 


No loadActions da ApplicationManager é só usar: addGlobalFilter(new MentaFilter());
Muito bom, um dia alguem vai precisar disso como eu precisei e vai achar esse tópico 


Realmente estava com esse problema e achei esse tópico.

Embora eu tenha achado uma alternativa com o uso de um Filtro (código a seguir), eu acredito que isso deva ser tarefa do Framework e não do programador, filtrando diretamente nas tags como sugeriu o Leandro. No meu caso uso mime "application/xhtml+xml" e isso gera um erro fatal (de XML mal formatado) no Firefox.

No meu código ele converte tudo que tiver na input e na output.

Code:
 import org.mentawai.core.Filter;
 import org.mentawai.core.Input;
 import org.mentawai.core.InvocationChain;
 import org.mentawai.core.Action;
 import org.mentawai.core.Output;
 
 import org.apache.commons.lang.StringEscapeUtils;
 
 public class MentaFilter implements Filter {
 
 	public static void escapeOutput(Output output) {
 		Iterator<String> it = output.keys();
 		while(it.hasNext()) {
 			String key = it.next();
 			Object value = output.getValue(key);
 			if (value instanceof String) {
 				output.setValue(key, StringEscapeUtils.escapeHtml((String)value));
 			}
 		}
 	}
 	
 	public static void escapeInput(Input input) {
 		Iterator<String> it = input.keys();
 		while(it.hasNext()) {
 			String key = it.next();
 			Object value = input.getValue(key);
 			if (value instanceof String) {
 				input.setValue(key, StringEscapeUtils.escapeHtml((String)value));
 			}
 		}
 	}
 	
 	@Override
 	public String filter(InvocationChain chain) throws Exception {
         Action action = chain.getAction();
         String result = chain.invoke();
         
         escapeOutput(action.getOutput());
         escapeInput(action.getInput());
         
         return result;
 	}
 }
 


No loadActions da ApplicationManager é só usar: addGlobalFilter(new MentaFilter());
Para mim, está excelente.

Obrigado.
Olá pessoal

Gostaria que, se fosse possível, alterar a visibilidade do método service do ApplicationManager para protected, pois estou tendo problemas com páginas JSPs usando caracteres UTF-8 e única solução que encontrei foi sobrescrever essa função, que é chamada antes do prepareAction no Controller, para alterar a codificação dos parâmetros. Segue o código:

Code:
 public class ApplicationManager extends org.mentawai.core.ApplicationManager {
     @Override
     public void loadActions() {
         /* Códigos */
     }
     @Override
     protected void service(Context appContext, HttpServletRequest req, HttpServletResponse res)
     {
         try {
             req.setCharacterEncoding("UTF-8");
         } catch (Exception e) {}
     }
 }
 


Assim os parâmetros de entrada da Action irão com a codificação correta.
Esse problema também foi relatado no tópico: http://forum.mentaframework.org/posts/list/185.page

Segue o patch em anexo.
 
Profile for demi -> Messages posted by demi [5]
Go to:   
Powered by JForum 2.1.6 © JForum Team