selectItems JSF

9 respostas
G

Prezados,

Eu estou desenvolvendo uma aplicação web simples para cadastro de embarcações. Tenho as seguintes tabelas: Proprietario,Embarcacao(superclasse), Jetski(subclasse) e lancha(subclasse), quero que o sistema funcione da seguinte forma, cadastro primeiro os proprietarios e quando eu for cadastrar uma embarcação quero tenha uma lista de todos os proprietarios cadastrado no banco para que eu possa selecionar.

Segue minhas classes;

ProprietarioBean:

public class ProprietarioBean implements Serializable {
	private static final long serialVersionUID = 1L;

	private Proprietario registro;
	private List<Proprietario> listagem;
	private String filtro;
	private int inicio;
	private int fim;


	public ProprietarioBean() {

		this.registro = new Proprietario();
		this.listagem = null;
		this.filtro = new String();
		this.inicio = 0;
		this.fim = 0;
	}

JetskiBean:

public class JetskiBean implements Serializable {
	private static final long serialVersionUID = 1L;

	private JetSki registro;
	private List<JetSki> listagem;
	private String filtro;
	private int inicio;
	private int fim;

	public ProprietarioBean propr = new ProprietarioBean();
	public List<Proprietario> listaprop;
	public Integer idPropSelect;
	public List<SelectItem> listaProprietarios = new ArrayList<SelectItem>();

	public JetskiBean() {
		this.registro = new JetSki();
		this.listagem = null;
		this.filtro = new String();
		this.inicio = 0;
		this.fim = 0;
		listarProprietarios();
	}

	public void listarProprietarios() {
		try {
			ProprietarioHibernate regHBR = new ProprietarioHibernate();
			listaprop = regHBR.listaTudo();
			for (Proprietario p : listaprop)
				listaProprietarios.add(new SelectItem(p.getidProprietario(), p
						.getproprietarioNome()
						+ " "
						+ p.getCpf()
						+ " "
						+ p.getTelefone() + " " + p.getArrais()));
		} catch (HibernateException e) {
			FacesContext context = FacesContext.getCurrentInstance();
			context.addMessage(null, new FacesMessage(
					FacesMessage.SEVERITY_ERROR, "ERRO!",
					"Falha na consulta aos dados."));
			e.printStackTrace();
		}
	}

Trecho do JSP onde ele busca os proprietarios:

<h:outputLabel id="ProprietarioLabel" value="Proprietario: "
					for="ProprietarioCampo" />
				<h:selectOneListbox id="ProprietarioCampo" size="8"
					value="#{jetskiBean.listaprop}" required="true">
					<f:selectItems value="#{jetskiBean.listaProprietarios}" />
				</h:selectOneListbox>

Quando o formulario jsp para poder inserir um jetski(embarcacao) da o seguinte erro:

Grave: JSF1054: (Phase ID: RENDER_RESPONSE 6, View ID: /jetski/incluirJetski.jsp) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@109e54e]
Out 01, 2012 2:59:52 PM org.apache.catalina.core.StandardWrapperValve invoke
Grave: Servlet.service() for servlet [Faces Servlet] in context with path [/Cadastro_Embarcacao] threw exception [Era esperado um componente-filho do tipo UISelectItem/UISelectItems para o componente do tipo javax.faces.SelectOne(ProprietarioCampo).  Encontradonull.] with root cause
java.lang.IllegalArgumentException: Era esperado um componente-filho do tipo UISelectItem/UISelectItems para o componente do tipo javax.faces.SelectOne(ProprietarioCampo).  Encontradonull.
	at com.sun.faces.renderkit.RenderKitUtils.getSelectItems(RenderKitUtils.java:320)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:783)
	at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:280)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:864)
	at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:244)
	at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:180)
	at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:127)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:148)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:840)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:930)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:933)
	at com.sun.faces.application.ViewHandlerImpl.doRenderView(ViewHandlerImpl.java:266)
	at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:197)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	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:305)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:585)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Alguem saberia da alguma dica??Estou usando Hibernate
Lembrando que os atributos estao nas classes POJO
O array eu criei na classe jetskibean, esta certo?

Valeu

9 Respostas

Hebert_Coelho

Não duplique seus posts: http://www.guj.com.br/java/283578-erro-jsf

Isso é desnecessário e contra as regras.

G

Alguem para ajudar??

Hebert_Coelho

gust:
Alguem para ajudar??
Pq vc não continua isso no seu tópico original?
Pra que ficar duplicando e ainda ficar dando ups nos posts duplicados?

G

Cara,

Larga de ser enjuado, se nao quer ajudar beleza, entao fica na sua!!!
Como tem gente babaca.

Hebert_Coelho

gust:
Cara,

Larga de ser enjuado, se nao quer ajudar beleza, entao fica na sua!!!
Como tem gente babaca.

Eu que estou poluindo e atrapalhando o forum que sou o babaca?
Você pensou que existem regras? Ou não te ensinaram a segui-las?

G

E oque voce tem haver com isso??Voce e o dono do forum??Entao nao venha querer tirar uma de bom samaritano nao meu amigo!

Hebert_Coelho

gust:
E oque voce tem haver com isso??Voce e o dono do forum??Entao nao venha querer tirar uma de bom samaritano nao meu amigo!
Engraçado, olha meus histórico de mensagens e você vai ter a resposta quanto ao bom samaritano.

E você tem ajudado em que aqui?

Eu coloco os avisos aqui não por me achar o dono do fórum, mas talvez por te mostrar as regras que você possa não ter visto.

G

Cara,

Nao vou perder meu tempo aqui discutindo com voce nao, pois nao sou esse tipo de pessoa de ficar discuindo.
So acho que se voce quer mostrar as regras do forum para os membros, voce tem que fazer isso com menos arrogancia, com mais respeito e nao se achar melhor que os outros.

Rodrigo_Sasaki

Aonde ele foi arrogante?

Se você não quer respeitar as regras do fórum isso é uma opção sua, mas não fique se perguntando depois por que que ninguém vem te ajudar.

Criado 1 de outubro de 2012
Ultima resposta 2 de out. de 2012
Respostas 9
Participantes 3