[RESOLVIDO] JSF - Campo de Data em branco

9 respostas
F

Olá gente,
tenho um campo de data na minha página (gostaria de deixar bem claro que nunca utilizei data em meus formulários, então sou leigo)

<h:inputText value="#{pessoaBean.dataNascimento.time}">
    <f:convertDateTime pattern="dd/MM/yyyy" />
</h:inputText>

Dentro de meu Backing Bean a data é do tipo Calendar:

@Column(nullable=true)  
@Temporal(TemporalType.DATE)  
private Calendar dataExpiracao;

E como vocês podem ver eu gostaria muito que o campo data não fosse obrigatório.

Quando o campo é deixado em branco é retorna o seguinte erro:

Target Unreachable, 'data' returned null

Socorro, como resolver isso?
(deve ser simples, mas esse JSF está pegando no meu pé, mas tô aprendendo…)

9 Respostas

A

bom dia, costumo usar assim

<rich:calendar buttonIcon="../../imagens/calendar.gif" id="initialVigency" enableManualInput="true" required="false" datePattern="dd/MM/yyyy" value="#cotacaoHandler.cotacao.inicioVigencia}" >
       <a4j:support event="onkeyup" ajaxSingle="true" />
</rich:calendar>

do jeito que você usa com input deve ter um atributo required que você pode setar como required=“false”

<h:inputText value="#{pessoaBean.dataNascimento.time}" required="false">  
     <f:convertDateTime pattern="dd/MM/yyyy" />  
</h:inputText>

[]'s

F

Obrigado por sua resposta alberto.
Bem, você me mandou um código de richfaces, mas eu não estou utilizando richfaces e o código que você acrescentou required=“true” nao adiantou em nada, já que o atributo TIME da data(calendar) continua recebendo um valor NULL.

A

Eu adicionei required=“false” e não required=“true” ok ?

[]'s

F

erro de digitação, foi isso que quis dizer: required=false

F

Boa notícia.
O erro era ocasionado porque eu estava esquecendo de inicializar a variável:

data = Calendar.getInstance();

Porém o problema da data ficar vazia ainda permanece, a diferença é que agora o erro é outro (o erro real)
Error writing ‘time’ on type java.util.GregorianCalendar
Agora sim, esse erro sim é ocasionado porque estou passando um valor em branco para um campo TIME de CALENDAR.

Como resolver?
Eis a questão!

A

Tenho uma sugestão, se vc vai usar este campo apenas para dd/MM/yyyy porque não faz assim:

// sem anotações porque não estou usando hibernate
private Date dataExpiracao = new Date();

e na pagina assim:

<h:inputText required="false" id="vencimento" value="#{categoriaHandler.dataExpiracao}">
    <f:convertDateTime pattern="dd/MM/yyyy"/>
</h:inputText>

[]'s

F

Na verdade foi exatamente o que acabo de fazer (1 minuto antes de você responder) mudei para Date mesmo e deu certo.
O problema é que eu vou ficar sem saber como usar Calendar com JSF mas mesmo assim esse problema está resolvido por hora.

Obrigado em cara, valeu.

A

logo mais vou tentar resolver esse problema quando achar posto por aqui, você me deixou curioso em como resolver rsss

[]'s e desculpa nao ter ajudado totalmente…

F

Relaxe, sei que você fez o seu melhor.
Se eu encontrar a resposta posto aqui também :smiley:

Criado 3 de agosto de 2009
Ultima resposta 3 de ago. de 2009
Respostas 9
Participantes 2