Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

h:outputFormat não atualizando

Pessoal,

estava cá estudando pelo Core JavaServer Faces e me veio testar o h:outputFormat com locale.

A ideia é usar o h:outputFormat com uma mensagem localizada e um parâmetro. Por default, a aplicação usa locale pt_BR, mas muda para en_US quando o usuário faz login.

No .xhtml:

    <f:view locale="#{usuarioLogado != null ? usuarioLogado.locale : ''}">
        <h:outputFormat value="#{msgs.msgFormat}">
            <f:param value="aprender JSF" />
        </h:outputFormat>
    </f:view>

Quando acesso a página na primeira vez, com usuário deslogado, a mensagem, em pt_BR, é formatada corretamente. Daí faço login e acesso novamente a página, mas dessa vez a mensagem, em en_US, não é formatada(o {0} não é preenchido).

É como se, no segundo acesso, não houvesse mais o f:param, ou ele não fosse reavaliado...

O código encontra-se em:

index.xhtml

messages

O resto do código é basicamente o que é desenvolvido no decorrer deste curso.

2 respostas
solução!

Olá,

Ele está usando o locale padrão e funciona, o problema é quando você seta o locale en_US verifique se está setando esse valor corretamente, se a escrita do locale está correta. Pode ser que ele não esteja localizando o locale e por isso não está formatando.

Fala Márcio!

Obrigado pela resposta.

Depois de procurar em vários lugares, o problema era só da mensagem haha

No arquivo está:

msgFormat=Guys, I'd like to {0}

sendo que é necessário escapar o single quote, ficando:

msgFormat=Guys, I''d like to {0}

A classe que formata pelo visto interpreta que o que vem depois do single quote não fechado não deverá ser formatado :)