Estou internacionalizando um sistema WEB,
mas ao tentar incluir a seguinte linha o sistema para de funcionar.
pg_etapa.avaliador=Nome do Avaliador: {destinatario}
já descobri que é por causa do caracter chave.
Mas como resolver já pesquisei bastante e não encontrei nada.
[quote=antonioedirane]Estou internacionalizando um sistema WEB,
mas ao tentar incluir a seguinte linha o sistema para de funcionar.
pg_etapa.avaliador=Nome do Avaliador: {destinatario}
já descobri que é por causa do caracter chave.
Mas como resolver já pesquisei bastante e não encontrei nada.[/quote]
oi
vc tentou assim ?
pg_etapa.avaliador=Nome do Avaliador: \{destinatario}
já tentei e não deu certo.
Olá…
Olha, eu não tenho certeza, mas eu acho que vc talvez tenha que usar regex para fazer funcionar…
Tenta procurar sobre regex q acho q vai te ajudar.
Abs();
O seu problema não é com o caracter chave e sim com o “:”.
Leia com atenção o Javadoc: Properties.load
Se você quiser entrar com o caracter “:” em um valor, você precisa precedê-lo com o caracter “”. Portanto, você teria de fazer:
pg_etapa.avaliador=Nome do Avaliador\: {destinatario}
Não é com o “:” não, pois tenho mais umas 200 expressões com os dois pontos e todos funcionam.
Estou tentando ver com regex, mas não estou conseguindo encontrar como usar regex no arquivo properties.
[quote=enantiomero]O seu problema não é com o caracter chave e sim com o “:”.
Leia com atenção o Javadoc: Properties.load
Se você quiser entrar com o caracter “:” em um valor, você precisa precedê-lo com o caracter “”. Portanto, você teria de fazer:
pg_etapa.avaliador=Nome do Avaliador\: {destinatario}
[/quote]
Continuo reafirmando que seu problema não é com “{” e sim com “:”. Escrevi o seguinte programa para provar.
import java.util.*;
import java.io.*;
class TesteProperties {
public static void main(String[] args) throws IOException {
Properties prop = new Properties();
prop.setProperty ("pg_etapa.avaliador", "Nome do Avaliador: {destinatario}");
FileWriter fw = new FileWriter ("teste.properties");
prop.store (fw, "Exemplo de property com chave e dois pontos");
fw.close();
// Após a execução de prop.store, o conteúdo de teste.properties é parecido com isto aqui:
/*
#Exemplo de property com chave e dois pontos
#Thu Sep 17 13:31:03 BRT 2009
pg_etapa.avaliador=Nome do Avaliador\: {destinatario}
*/
// Note que o caracter ":" foi precedido por um "\".
Properties propLida = new Properties();
FileReader fr = new FileReader ("teste.properties");
propLida.load (fr);
fr.close();
System.out.println (propLida.getProperty ("pg_etapa.avaliador"));
// Deve imprimir:
/*
Nome do Avaliador: {destinatario}
*/
}
}
De fato, se você leu adequadamente o Javadoc, ele diz que o nome da chave termina no primeiro “:” ou “=” que ele encontrar. Entretanto, pode ser que você tenha algum problema em uma linha ANTES dessa tal chave (que deveria funcionar normalmente) e aparentemente o problema aparece na tal linha que você está mostrando. Um exemplo de arquivo Properties que pode dar problemas:
pg_etapa.diretorio=c:\temp\
pg_etapa.avaliador=Nome do Avaliador: {destinatario}
O que ocorreu é que a property “pg_etapa.diretorio” recebeu o seguinte valor:
“c:temppg_etapa.avaliador=Nome do Avaliador: {destinatario}”
e a property “pg_etapa.avaliador” nem foi setada, porque sua linha foi “engolida” pela linha anterior.
porque se um “” estiver em um final de linha, esse “” “engole” o final de linha e junta as duas linhas em uma só. Tome cuidado com “”, é isso que pode estar dando problemas. OK?