Jboss seam - javax.el.PropertyNotFoundException

1 resposta
edysnipes

Estou aprendendo Seam e estou seguindo alguns tutoriais e não entendo o porque desse erro:

Tenho um simples <s:link que chama um método da action e retorna para outra página.

Qual o problema?

home.xhtml

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:s="http://jboss.com/products/seam/taglib"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:a="http://richfaces.org/a4j"
    template="layout/template.xhtml">

	<ui:define name="body">
	
		<f:view>
			<h:form>
				<h:outputLabel value="Tipo de Servico:" />
				<h:selectOneMenu value="#{ordemServico.tipoServico}">
					<f:selectItems value="#{solicitarServico.listarTiposServicos}"></f:selectItems>
				</h:selectOneMenu>
				
				<h:commandButton action="#{solicitarServico.solicitarServico}" value="Incluir"/>
			</h:form>
	    </f:view>
	    
	</ui:define>
</ui:composition>

ServicoAction

package br.mil.eb.pmb.ospnr.session;

import java.util.ArrayList;
import java.util.List;

import javax.faces.model.SelectItem;
import javax.persistence.EntityManager;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Factory;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.datamodel.DataModel;

import br.mil.eb.pmb.ospnr.entity.OrdemServico;
import br.mil.eb.pmb.ospnr.entity.TipoServico;

@Name("solicitarServico")
@Scope(ScopeType.STATELESS)
public class ServicoAction {

	public static void main(String[] args) {
		ServicoAction a = new ServicoAction();
		a.listarTiposServicos();
	}
	
	@In
	private EntityManager entityManager;
	
	@In
	private OrdemServico ordemServico;
	
	@DataModel
	private List<SelectItem> tiposServicos;
	
	@SuppressWarnings("unchecked")
	@Factory("tiposServicos")
	public String listarTiposServicos(){
		tiposServicos = new ArrayList<SelectItem>();	
		tiposServicos.add(new SelectItem(null, "--- Selecione ---"));
		List<TipoServico> lista = new ArrayList<TipoServico>();
		lista = entityManager.createQuery("select t from TipoServico t").getResultList();	
		for(TipoServico t : lista){
			tiposServicos.add(new SelectItem(t.getIdTipo(), t.getDescTipo()));
		}
		return "solicitarServico.xhtml";
	}    
    
}

Erro:

17:42:24,501 ERROR [Exceptions] handled and logged exception
javax.el.PropertyNotFoundException: Target Unreachable, identifier 'solicitarServico' resolved to null
	at org.jboss.el.parser.AstValue.getTarget(AstValue.java:38)
	at org.jboss.el.parser.AstValue.invoke(AstValue.java:95)
	at org.jboss.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at org.jboss.seam.core.Expressions$2.invoke(Expressions.java:175)
	at org.jboss.seam.navigation.Pages.callAction(Pages.java:692)
	at org.jboss.seam.navigation.Pages.preRender(Pages.java:330)
	at org.jboss.seam.jsf.SeamPhaseListener.preRenderPage(SeamPhaseListener.java:561)
	at org.jboss.seam.jsf.SeamPhaseListener.beforeRenderResponse(SeamPhaseListener.java:472)
	at org.jboss.seam.jsf.SeamPhaseListener.beforeServletPhase(SeamPhaseListener.java:148)
	at org.jboss.seam.jsf.SeamPhaseListener.beforePhase(SeamPhaseListener.java:118)
	at com.sun.faces.lifecycle.Phase.handleBeforePhase(Phase.java:214)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:96)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
	at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
	at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
	at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Thread.java:619)

Agradeço!

1 Resposta

H

Olá. Nunca trabalhei com seam, mas conheço um pouco de jsf.

Propriedade não encontrada:

javax.el.PropertyNotFoundException: Target Unreachable, identifier 'solicitarServico'  resolved to null

Aqui você tem um botão com uma action:

//         aqui chama você está chamando o metodo solicitarServico da classe ServicoAction
&lt;h:commandButton action="#{solicitarServico.solicitarServico}" value="Incluir"/&gt;

Mas no seu ServicoAction não tem um método que represente a action solicitarServico.

Espero ter ajudado.

Criado 28 de fevereiro de 2010
Ultima resposta 28 de fev. de 2010
Respostas 1
Participantes 2