[RESOLVIDO] Passando data como f:param no Seam - Erro no DateConverter!

6 respostas
L

Tenho uma entidade com uma composite-PK na qual uma delas é uma data.

Meu resultList tá mostrando certinho, com todas as informações que eu quero. Mas na hora de visualizar ou editar o que eu quero, ele dá erro.
Diz: "value must be a date".
Ou seja, na hora da passagem de parâmetros ele não tá passando a data. O que eu vi na hora de debugar. Gostaria de saber se existe uma solução para o problema.
Já tentei passar como long e fazer um converter, mas não resolveu.
Seguem os códigos:

<rich:column styleClass="action">
            <f:facet name="header">Ações</f:facet>
            <s:link view="/Aditivo/#{empty from ? 'Aditivo' : from}.xhtml"
                   value="#{empty from ? 'Visualizar' : 'Selecionar'}"
             propagation="#{empty from ? 'none' : 'default'}"
                      id="aditivoViewId">
                <f:param name="aditivoSqAquisicao"
                	 	value="#{_aditivo.id.sqAquisicao}"/>
                <f:param name="aditivoDtInicio"
                		value="#{aditivo.id.dtInicio.time}">
				</f:param>                		
            </s:link>
            #{' '}
            <s:link view="/Aditivo/AditivoEdit.xhtml"
                   value="Editar"
             propagation="none"
                      id="aditivoEdit"
                rendered="#{empty from}">
                <f:param name="aditivoSqAquisicao"
                        value="#{_aditivo.id.sqAquisicao}"/>
                <f:param name="aditivoDtInicio"
                		value="#{_aditivo.id.dtInicio.time}"/>
            </s:link>
        </rich:column>
public class AditivoHome extends EntityHome<Aditivo> {

	public void setAditivoId(AditivoId id) {
		setId(id);
	}

	public AditivoId getAditivoId() {
		return (AditivoId) getId();
	}

	public AditivoHome() {
		setAditivoId(new AditivoId());
	}

	@Override
	public boolean isIdDefined() {
		if (getAditivoId().getSqAquisicao() == 0)
			return false;
		if (getAditivoId().getDtInicio() == null)
			return false;
		return true;
	}

	@Override
	protected Aditivo createInstance() {
		Aditivo aditivo = new Aditivo();
		aditivo.setId(new AditivoId());
		return aditivo;
	}

	public void load() {
		if (isIdDefined()) {
			wire();
		}
	}

	public void wire() {
		getInstance();
	}

	public boolean isWired() {
		return true;
	}

	public Aditivo getDefinedInstance() {
		return isIdDefined() ? getInstance() : null;
	}

A classe AditivoId é uma classe básica. Com um construtor e métodos hashCode() e equals().

Grato.

6 Respostas

L

Nada?!

L

Tentei passar como ui:param, também nada.

L

Fiz um outro debug agora e a passagem de parametros tá totalmente errada. Nem o aquisição tá passando.

L

Descobri mais precisamente o erro mas ainda não o resolvi. AJUDEM POR FAVOR!

Os valores estão sendo passados corretamentes.
O problema acontece quando ele vai fazer um converter da data em um método chamado convertAndValidateStringValuesInPageContext(FacesContext) do PageParameter.
A data que ele pega e passa para o converter é do tipo “2011-03-01 00:00:00.0”, o converter é o org.jboss.seam.faces.DateConverter que extende o javax.faces.convert.DateTimeConverter.

Mas lá no arquivo .xhml, eu uso uma tag chamada <s:convertDateTime> que mudo o pattern, o tipo e o estilo da data. Isso não resolve a questão do formato da data.
Decidi criar um converter pra fazer isso. Também não resolveu.

Ele me joga um converterException (sempre, não só no converter que eu criei) dizendo que o valor deve ser uma data.
Desconfio que antes de entar no método acima, o convertAndValidade…, ele muda o tipo do valor, de Date vai pra String, e assim me joga esse erro.

Alguém sabe como resolver isso? Tô a algum tempo preso nesse problema.

Grato.

L

RESOLVIDO!

rafaelaju

Pow cara estou com um problema parecido, eu tenho o valor do id da linha, porem qdo tento passar no metodo chamado no s:link, ele so passa nulo…posta sua solução ai por favor…obrigado

Criado 23 de fevereiro de 2011
Ultima resposta 8 de jul. de 2011
Respostas 6
Participantes 2