Dúvidas e problemas com combo do struts

9 respostas
Solfier

saudações!

estou tentando fazer uma pequena aplicação com struts e hibernate. E estou com preblemas para fazer um combo do struts.

Montagem do struts:

<html:form action="/AddLicenca">
                <html:select name="AddLicenca" property="ComputadorCodigo">
                    <html:optionsCollection property="Computadores"/>
                </html:select>
        </html:form>

ActionForm:

public class AddLicenca extends org.apache.struts.action.ActionForm {
    private String ComputadorCodigo;
    private Collection Computadores;
    public Collection getComputadores() {
        return Computadores;
    }
    public void setComputadores(Collection Computadores) {
        this.Computadores = Computadores;
    }
    public String getComputadorCodigo() {
        return ComputadorCodigo;
    }
    public void setComputadorCodigo(String ComputadorCodigo) {
        this.ComputadorCodigo = ComputadorCodigo;
    }
    public List Computadores() {
        ComputadorDAO computadorDAO = new ComputadorDAO();
        return computadorDAO.list("from computador order by codigo");
    }
    public AddLicenca() {
        super();
    }
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
        ActionErrors errors = new ActionErrors();
        return errors;
    }
}

Se precisar de mais alguma coisa, eu passo.

O erro que exibido é:

Alguém saberia a causa desse erro e algum tutorial de como usar combo do struts com hibernate?

até mais gelera!

9 Respostas

B

Cara não sei se vc já resolveu o problema mas nas sua página jsp ao invés de chamar ComputadorCodigo chame por computadorCodigo, com letra minúscula na primeira posição, a mesma coisa para propriedade computadores…
Em relação aos tutoriais da uma olhadinha no google ou uma pesquisada aqui no fórum mesmo…vc vai achar muita coisa…

Solfier

sua dica funcionou! muito obrigado!!!

porém agora veio outro erro:

alguma idéia?

B

Faz o seguinte cara…Poste a stack trace completa do erro…

Solfier

a stack trace completa

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspException: Exception thrown by getter for property computadores of bean org.apache.struts.taglib.html.BEAN

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: Exception thrown by getter for property computadores of bean org.apache.struts.taglib.html.BEAN

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)

org.apache.jsp.licencas_jsp._jspService(licencas_jsp.java:90)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

javax.servlet.jsp.JspException: Exception thrown by getter for property computadores of bean org.apache.struts.taglib.html.BEAN

org.apache.struts.taglib.TagUtils.lookup(TagUtils.java:897)

org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCollectionTag.java:177)

org.apache.jsp.licencas_jsp._jspx_meth_html_005foptionsCollection_005f0(licencas_jsp.java:195)

org.apache.jsp.licencas_jsp._jspx_meth_html_005fselect_005f0(licencas_jsp.java:165)

org.apache.jsp.licencas_jsp._jspx_meth_html_005fform_005f0(licencas_jsp.java:117)

org.apache.jsp.licencas_jsp._jspService(licencas_jsp.java:80)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.

B

Então cara, provavelmente seu erro está dentro desse método list do seu ComputadorDAO:

computadorDAO.list("from computador order by codigo");

Como você está acessando sua base de dados?? Está utilizando Hibernate ou JPA ??
Poste essa classe ComputadorDAO tbm…

Solfier

estou usando hibernate

o DAO:
public class ComputadorDAO {

    private SessionFactory factory;
    private Session session;

    public ComputadorDAO() {
        this.factory = HibernateUtil.getSessionFactory();
        this.session = factory.openSession();
    }

    public void insert(Computador computador) {
        Transaction transaction = session.beginTransaction();
        session.save(computador);
        transaction.commit();
    }

    public void delete(Computador computador) {
        Transaction transaction = session.beginTransaction();
        session.delete(computador);
        transaction.commit();
    }

    public void update(Computador computador) {
        Transaction transaction = session.beginTransaction();
        session.update(computador);
        transaction.commit();
    }

    public List list(String condicao) {
        List computadores = session.createQuery(condicao).list();
        return computadores;
    }

    public Collection getCollection(String condicao) {
        Collection computadores = session.createQuery(condicao).list();
        return computadores;
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
        session.flush();
        session.close();
    }
}
B

Tenta fazer um teste assim:

1 - Coloca um try / catch dentro do seu método list
2 - Depois debuge o código para ver se esta exceção não levantou lá…

Solfier

A exceção é levantada no método list…

qual seria o problema?

Solfier

breno500as:
Tenta fazer um teste assim:

1 - Coloca um try / catch dentro do seu método list
2 - Depois debuge o código para ver se esta exceção não levantou lá…

Fiz algumas correções, e agora o erro é:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /licencas.jsp at line 28

25:


26:

Computador


27: <html:select name=“AddLicenca” property=“computadorCodigo”>
28: <html:optionsCollection property=“computadores” value=“ComputadorId” label=“Codigo”/>
29: </html:select>
30:
31:
Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:398)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

javax.servlet.ServletException: javax.servlet.jsp.JspException: Failed to obtain specified collection

org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:852)

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:781)

org.apache.jsp.licencas_jsp._jspService(licencas_jsp.java:90)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)

root cause

javax.servlet.jsp.JspException: Failed to obtain specified collection

org.apache.struts.taglib.html.OptionsCollectionTag.doStartTag(OptionsCollectionTag.java:181)

org.apache.jsp.licencas_jsp._jspx_meth_html_005foptionsCollection_005f0(licencas_jsp.java:199)

org.apache.jsp.licencas_jsp._jspx_meth_html_005fselect_005f0(licencas_jsp.java:165)

org.apache.jsp.licencas_jsp._jspx_meth_html_005fform_005f0(licencas_jsp.java:117)

org.apache.jsp.licencas_jsp._jspService(licencas_jsp.java:80)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)

javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:390)</blockquote>
Criado 8 de janeiro de 2010
Ultima resposta 18 de jan. de 2010
Respostas 9
Participantes 2