Calendar PrimeFaces

4 respostas
J

Estou tentando criar um objeto do tipo Calendar do Primefaces, e ao carregar a pagina com o componente gera esse erro:

Cannot format given Object as a Date

Crio dinamicamente o componente, usando JSF 2:

public UIComponent CriaText(){
Calendar calendario = (Calendar) app
					.createComponent(Calendar.COMPONENT_TYPE);
			calendario.setId(nome);
                        calendario.setPattern("dd/MM/yyyy");
calendario.setValueExpression(
						"value",
						exprFactory.createValueExpression(elctx, "#{transacaoFornecedor.campo.dtnasc"}", String.class));
return calendario
}

Na passagem pelo codigo nao gera nenhum erro, mas ao carregar a pagina acontecer o erro.
A minha variavel é criada assim:

private Date dtnasc;

public Date getDtnasc() {
		return dtnasc;
	}

	public void setDtnasc(Date dtnasc) {
		this.dtnasc = dtnasc;
	}

Alguem sabe o que poderia ser?

4 Respostas

Natalia_Lima

Debugando, vc verificou se nessa linha realmente está vindo um valor?

calendario.setValueExpression( "value", exprFactory.createValueExpression(elctx, "#{transacaoFornecedor.campo.dtnasc"}", String.class));

Tem como postar o código da jsp tbm?

J

Fiz um exemplo simples para tentar explicar:

Essa é minha classe onde é chamada pelo xhtml

@ManagedBean
public class Calendario {

	public HtmlPanelGrid getTela() {
		HtmlPanelGrid criaCampos = new HtmlPanelGrid();
		CriaObjetos cria = new CriaObjetos();

                //esse CriaTexto na verdade é uma funcao para criaçao de componentes, ou seja, eu tenho somente uma vez e so mando os 
                //requisitos para criaçao, size, maxLenght, id e por ai vai...
		criaCampos.getChildren().add(
				cria.CriaTexto(10, 10, false, true, true, "dtnasc",
						Constantes.TELAFORNECEDOR, Constantes.TIPOTRANSACAO,
						"date"));
		return criaCampos;

	}

}

aqui onde eu tenho os campos que uso para pesquisas e tudo mais, deixo separado da minha classe MB.

private Date dtnasc;
	private String insc_municipal;
	private String npr;
	private String valorpago;

//com seus getters e setters...

meu xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
	</h:head>
	<h:body>
	 	<h:form>
		<h:panelGrid binding="#{calendario.tela}"/> 
	</h:form>
	</h:body>
</html>

e respondendo tua pergunta, nao consigo debugando pegar o valor que é passado para value.

Natalia_Lima

Olha, eu não sou perita no assunto…
Mas pelo erro, parece que não está indo um Date para o componente, que é o que ele precisa receber…

Por um acaso, não é aquele String.class que transforma sua saída em uma String e aí o componente não consegue pegar o valor?

J

Olha, ficou perfeito, realmente era o String.Class, troquei para Date.Class e funcionou legal. Obriagdo.

Mais uma pergunta, nao sei se já trabalhou com os componentes do PrimeFaces, (estou começando a usa-los agora)…sabe como faço para passar um style para o componente?

exemplo:

<p:calendar value="#{calendario.data}" pattern="dd/MM/yyyy" style="color:black;background:Cornsilk" />

simplesmente nao aceita o style, fica normal.

Criado 27 de janeiro de 2011
Ultima resposta 28 de jan. de 2011
Respostas 4
Participantes 2