[RESOLVIDO] Mensagem personalizada de erro - JSF- AJUDA

Caros colegas,

Estou tentanto utilizar uma messagem personalizada para informar ao usuário um erro na inserção de uma data em um formulário. Contudo a mensagem personalizada não aparece!

Tenho os seguintes arquivos em minha aplicação web:

index.jsp:

[code]
<%@ taglib uri=“http://java.sun.com/jsf/core” prefix=“f” %>
<%@ taglib uri=“http://java.sun.com/jsf/html” prefix=“h” %>
<f:view>
<f:loadBundle basename=“com.corejsf.messages” var=“msgs”/>



<h:outputText value="#{msgs.title}"/>



<h:form>

<h:outputText value="#{msgs.paymentInformation}"/>


<h:panelGrid columns=“3”>
<h:outputText value="#{msgs.amount}"/>
<h:inputText id=“amount” label="#{msgs.amount}"
value="#{payment.amount}">
<f:convertNumber minFractionDigits=“2”/>
</h:inputText>
<h:message for=“amount” styleClass=“errorMessage”/>
            <h:outputText value="#{msgs.creditCard}"/>
            <h:inputText id="card" label="#{msgs.creditCard}"
            		value="#{payment.card}"/>
			<h:panelGroup/>

            <h:outputText value="#{msgs.expirationDate}"/>
            <h:inputText id="date" label="#{msgs.expirationDate}"
            		value="#{payment.date}">
            <f:convertDateTime pattern="MM/yyyy"/>
            </h:inputText>
            <h:message for="date" styleClass="errorMessage"/>            
        </h:panelGrid>
        <h:commandButton value="#{msgs.process}" action="process"/>
	 </h:form>
  </body>

</f:view>

[/code]

meu bean:

[code]package com.corejsf;

import java.util.Date;

public class PaymentBean {
private double amount;
private String card = “”;
private Date date = new Date();

public double getAmount() { return amount; }
public void setAmount(double amount) { this.amount = amount; }

public String getCard() { return card; }
public void setCard(String card) { this.card = card; }

public Date getDate() { return date; }
public void setDate(Date date) { this.date = date; }

}[/code]

faces-config.xml:

[code]<?xml version="1.0"?>


/index.jsp

process
/result.jsp

/result.jsp back /index.jsp payment com.corejsf.PaymentBean session com.corejsf.messages msgs

[/code]

messages.properties

title=Uma aplicação para testar conversão de dados enterPayment=Entre com as informações sobre o pagamento amount=Valor creditCard=Cartão de Crédito expirationDate=Data de validade (Mês/Ano) process=Processar paymentInformation=Informação do pagamento javax.faces.component.UIInput.CONVERSION=Formato Inválido javax.faces.component.UIInput.CONVERSION_detail=Formato Inválido(detalhe)

Quando eu digito, por exemplo, “01” (sem aspas, é claro) no campo “Data de validade (Mês/ano)” e clico no botão processar ele apresenta a seguinte mensagem:

Data de validade (Mês/Ano): ‘01’ não pode ser interpretado como data. Exemplo: 01/2010

Acredito eu, que essa seja uma mensagem padrão do JSF. Mesmo no bundle tendo sido setada a mensagem “Formato inválido”. Sabendo q a tag message exibe, por default, o detalhamente e não exibe o resumo, criei, para testar uma propriedade “_detail” (como mostrado no messages.properties acima) e nem assim a messagem personalizada não aparece. Seria pq falta algo no index.jsp para indicar q ele deve buscar a propriedade “javax.faces.component.UIInput.CONVERSION=Formato Inválido” no bundle?!?!

Desde já agradeço a atenção!

Alguma idéia!??!

Oi!

Creio que oque voce quer esteja aqui http://fisheye5.atlassian.com/browse/javaserverfaces-sources/jsf-api/src/javax/faces/Messages_pt_BR.properties?r=1.1.2.1
procure por DateTimeConverter

Tem este link tambem com outras constantes http://java.sun.com/javaee/javaserverfaces/1.2/docs/api/constant-values.html

jeverson, para isso você usa converters e/ou validators: http://www.ibm.com/developerworks/java/library/j-jsf3/

Caro vi-gb,
O link q vc me passou ajudou-me a perceber q eu deveria setar no .properties as seguintes propreidades:
javax.faces.converter.DateTimeConverter.DATE
javax.faces.converter.DateTimeConverter.DATE_detail

ao invés de:
javax.faces.component.UIInput.CONVERSION
javax.faces.component.UIInput.CONVERSION_detail

Em seguida, bastou eu fazer algumas alterações no meu faces-config.xml, conforme demonstrado a seguir.

vlw pela dica!

Caro juliofsn,
O link q vc me passou fala sobre a criação customizada ou somente personalização de msgs para conversores e validadores através de MB’s. Porém, estava a procura de uma solução via arquivo de propriedade. Contudo, acho o link super válido, visto que, nem sempre, a solução com o uso de .properties é a mais viável. Excelente dica! Obrigado pelo apoio

Aos colegas que porventura vistem esse tópico em busca d solução aew vai o que implementei com a ajuda dos companheiros aki do GUJ.

messages.properties:

title=Uma aplicação para testar conversão de dados enterPayment=Entre com as informações sobre o pagamento amount=Valor creditCard=Cartão de Crédito expirationDate=Data de validade (Mês/Ano) process=Processar paymentInformation=Informação do pagamento javax.faces.converter.DateTimeConverter.DATE=Data inválida javax.faces.converter.DateTimeConverter.DATE_detail=O valor "{0}" do campo "{2}" é inválido! Exemplo: {1}

adicionar ao faces-config.xml:

<application> <message-bundle>com.corejsf.messages</message-bundle> <locale-config> <default-locale>pt_BR</default-locale> </locale-config> </application>

por fim, a index.jsp: <h:outputText value="#{msgs.expirationDate}"/> <h:inputText id="date" label="#{msgs.expirationDate}" value="#{payment.date}"> <f:convertDateTime pattern="MM/yyyy"/> </h:inputText> <h:message for="date" styleClass="errorMessage"/>

Dessa forma a saída produzida para o erro é a seguinte:
O valor “01” do campo “Data de validade (Mês/Ano)” é inválido! Exemplo: 01/2010