Mensagens com parâmetros utilizando faces + xhtml

4 respostas
P

Olá!
Estou com dificuldades para resolver alguns problemas com relação à utilização de mensagens utilizando faces + xhtml.
Possuo cadastrada a seguinte mensagem num arquivo error*.properties:

javax.faces.component.UIInput.REQUIRED_detail=Campo Requerido -> {0}!

Ao submeter uma página xhtml com o campo sem preenchimento, a mensagem aparece como:

Campo Requerido -> edit:situacao!

onde "edit" é o nome do formulário e "situacao" é o nome do campo.

A dúvida é:
Como passo parâmetros para substituíção das strings ‘{0}’, ‘{1}’, etc… do arquivo de propriedades a partir de uma página xhtml?

Procurei bastante por documentação quanto a isso, porém a única informação que obtive foi substituição literal de expressões, como "#{alias.propriedade}", pelo texto do arquivo de propriedades, e nunca utilizando parâmetros.
Desde já, muito obrigado!

4 Respostas

P

Adicionei a propriedade label ao h:InputText e para a situação required foi suficiente.
Porém como posso resolver isso de forma genérica para outras situações? No caso de mensagens mais específicas utilizando dois argumentos, por exemplo…

Grato.

S

ola pdrvaz

vc poderia dar um exemplo dessa sua solução ?

Obrigado

P

O que fiz foi dicionar a propriedade label="#{msgs.situacao}".

<label>#{msgs.situacao}: </label> <h:selectOneRadio label="#{msgs.situacao}" id="situacao" value="#{capacidadeBean.capacidade.situacao}" layout="lineDirection" required="true" > <f:selectItems value="#{capacidadeBean.listaSituacao}"/> </h:selectOneRadio> <h:message id="msgSituacao" for="situacao" style="error" />

Agora a mensagem está correta “Campo Requerido -> Situação!”.
Funcionou no lugar de {0} para
javax.faces.component.UIInput.REQUIRED_detail = Campo Requerido -> {0}!
Funcionou no lugar de {2] para
javax.faces.converter.IntegerConverter.INTEGER_detail={2}: ‘’{0}’’ deve ser um numeral constituído por um ou mais dígitos.

Porém para que funcione dessa forma, estou limitado à mensagem do componente. Achei na sorte, não consegui documentação ou tutorial que me indicasse isso.
O que gostaria de fazer seria algo como indicar uma mensagem em que eu definisse os termos. Por exemplo, definir a requiredMessage e um array de argumentos que substituiriam {0}, {1}, …

<label>#{msgs.situacao}: </label> <h:selectOneRadio label="#{msgs.situacao}" id="situacao" value="#{capacidadeBean.capacidade.situacao}" layout="lineDirection" required="true" requiredMessage="#{errorMsgs.obrigatorio,[msgs.situacao]}"> <f:selectItems value="#{capacidadeBean.listaSituacao}"/> </h:selectOneRadio> <h:message id="msgSituacao" for="situacao" style="error" />

Não sei se isso é possível.
Obrigado pelo interesse!

P

Vou tentar deixar a pergunta mais simples…
Como faço prá encontrar documentação adequada para uso de mensagens com parâmetros na página de visualização?
Grato

Criado 26 de fevereiro de 2009
Ultima resposta 27 de fev. de 2009
Respostas 4
Participantes 2