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