Jsf - problemas com uso de objetos dentro de objetos

0 respostas
felipecaparelli

Olá,

estou tendo dificuldades com o JSF para pegar o valor contido em um atributo do objeto. Acredito que o problema esteja no fato deste objeto estar dentro de uma hierarquia TEM-UM: ObjetoPai.ObjetoContidoA.ObjetoContidoB.ObjetoContidoC. Estou tentando acessar os métodos deste ultimo objeto através de EL nas tags JSF. Segue o código abaixo:

<h:dataTable 
	value="#{AvaliacaoMainBB.avaliacao.avaliacaoDesempenho.avaliacaoCompetencias.competencias}"
	var="competencia">
	<h:column>
		<h:dataTable id="comportamento" value="#{competencia.comportamentos}" var="comportamento">
			<h:column>
				<f:facet name="header">
					<h:panelGrid columns="1">
						<h:outputText value=" " />
						<h:outputText value="#{competencia.nomeCompetencia}" />
	 					<h:outputText value="#{competencia.descricaoCompetencia}" />
					</h:panelGrid>
				</f:facet>				
				<h:outputText value=" - #{comportamento.descricaoComportamento}" />
				<br />
				<h:inputTextarea value="#{comportamento.obsComportamento}" cols="105" />
				<h:commandButton value="#{msg.botaoGravar}" actionListener="#AvaliacaoMainBB.avaliacao.avaliacaoDesempenho.avaliacaoCompetencias.gravarObservacaoComportamento}">
					<f:attribute name="idComportamento" value="#{comportamento.id}" />
				</h:commandButton>
			</h:column>

O trecho acima representa uma pagina jsp que exibirá uma lista de objetos Comportamento com seu devido nome e descricao.
Abaixo segue o faces-config.xml para os beans que atualmente estão mapeados:

<managed-bean>
		<managed-bean-name>AvaliacaoCompetencias</managed-bean-name>
		<managed-bean-class>jsf.backing.avaliacao.AvaliacaoCompetencias</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
	<managed-bean>
		<managed-bean-name>AvaliacaoMainBB</managed-bean-name>
		<managed-bean-class>jsf.backing.AvaliacaoMainBB</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
		<managed-property>
			<property-name>avaliacao</property-name>
			<value>#{AvaliacaoBB}</value>
		</managed-property>
	</managed-bean>

O problema ocorre ao se tentar pegar o #{comportamento.id}

Ocorre um NullpointerException neste código:

public String gravarObservacaoComportamento(ActionEvent event){
		
		if(avaliacaoComportamentoMap != null){
			
			Object value = event.getComponent().getAttributes().get("idComportamento");
			
			if(value != null){
				
				Integer idComportamento = new Integer(value.toString());
				
				AvaliacaoComportamento avaliacaoComportamento = new AvaliacaoComportamento();
				avaliacaoComportamento.setId(new AvaliacaoComportamentoPK(UserContext.getIdAvaliacaoAberta(), new Long(idComportamento.intValue())));
				avaliacaoComportamento.setObservacao(avaliacaoComportamento.getObservacao());
				
				AvaliacaoComportamentoDAO.getInstance().saveOrUpdate(avaliacaoComportamento); //Registra tudo de comportamento.
				
				return null;
				
			}else{
				throw new IllegalArgumentException("Componente não encontrado: " + value);
			}
		}
		
		return null;
	}

Alguém poderia me ajudar?

Criado 27 de outubro de 2008
Respostas 0
Participantes 1