Inserir o caracter "{" no arquivo de properties

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?