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
[/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!