Prolema com jsp:setProperty name="myBean.myPojo" property="*"

10 respostas
tebosoftware

Boa tarde pessoal

Estou começando a estudar JSP e nas video aulas que estava assistindo o autor usar um exemplo de formulário onde os campos são jogados automaticamente em um bean usando a tag:

<jsp:setProperty name="myBean.myPojo" property="*"/>

no exemplo dele funciona bem (video aula) mas não consigo fazer funcionar no meu teste.

abaixo segue os arquivos de teste:

MyClass.java

package exemplo;

public class MyClass {

    private MyPojo myPojo = new MyPojo();

    public MyClass() {
        System.out.println("Inicializado classe " + getClass());
    }

    public MyPojo getMyPojo() {
        return myPojo;
    }

    public void setMyPojo(MyPojo myPojo) {
        this.myPojo = myPojo;
    }
}

MyPojo.java

package exemplo;

public class MyPojo {

    private String nome;
    private int idade;

    public MyPojo() {
        nome = "Thales";
        idade = 27;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }    
}

index.jsp

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

<%@page contentType="text/html" pageEncoding="UTF-8" import="exemplo.*"%>
<jsp:useBean id="myBean" class="exemplo.MyClass" scope="session"/>
<jsp:setProperty name="myBean.myPojo" property="*"/>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form name="myPojo" action="add.jsp" method="post">
            Enter The Name: <input id="nome" size="30" value=${myBean.myPojo.nome}><br>
            Enter The Age: <input id="idade" size="10" value=${myBean.myPojo.idade}><br>
            <input type="submit">
        </form>
    </body>
</html>

add.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<jsp:useBean class="exemplo.MyClass" id="myBean" scope="session"/>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%
        out.print("The name is: " + myBean.getMyPojo().getNome() +
                " and The age is: " + myBean.getMyPojo().getIdade());
        %>
    </body>
</html>

se alguem puder me ajudar ficou muito grato

um abraço

10 Respostas

rsantik

index.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean id="myBean" class="exemplo.MyClass" scope="session"/>
<jsp:setProperty name="myBean.myPojo" property="*"/>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <form name="myPojo" action="add.jsp" method="post">
            Enter The Name: <input id="nome" size="30" value=${myBean.myPojo.nome}><br>
            Enter The Age: <input id="idade" size="10" value=${myBean.myPojo.idade}><br>
            <input type="submit">
        </form>
    </body>
</html>

add.jsp

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<jsp:useBean class="exemplo.MyClass" id="myBean" scope="session"/> 
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
         <%
         out.print("The name is: " + myBean.getMyPojo().getNome() +
                 " and The age is: " + myBean.getMyPojo().getIdade());
        %>
    </body>
</html>

MyClass.java

package exemplo;
 public class MyClass {

     private MyPojo myPojo = new MyPojo();

     public MyPojo getMyPojo() {
         return myPojo;
     }//fim do get

     public void setMyPojo(MyPojo myPojo) {
         this.myPojo = myPojo;
    }//fim do set
 }//fim da classe

MyPojo.java

package exemplo;

public class MyPojo {

    private String nome;
    private int idade;

    public MyPojo() {
        nome = "Thales";
        idade = 27;
    }

    public int getIdade() {
        return idade;
    }

    public void setIdade(int idade) {
        this.idade = idade;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }
}

Deu certo comigo… dá uma olhada no que está diferente
Em último caso…cria um novo projeto do zero faz tudo novamente!

Abraços!
Rodrigo Santik

tebosoftware

Rodrigo obrigado por me responder

bom comparei os arquivos e está tudo igual (tirando a ordem o dtd)

mas não funciona…

estou usando Netbeans 6.7.1 com Apache Tomcat 6.0.18

tem algum segredo nisso? o aplicativo ta sem bibliotecas

tebosoftware

Uma coisa que notei, é que os parametros estão indo nulos quando eu sumeto eles…

tebosoftware

Fiz alguns testes aqui, e notei que eu não consigo alterar o valor de uma propriedade dentro do objeto myPojo que esta em myBean. Da erro falando q a propriedade não existe e eu tentei fazer com o <jsp:setProperty nome=“myBean.myPojo” property=“nome” value=“Teste”/> dentro do add.jsp.

eu nao to entendendo mais nada rs…

alguém poderia me explicar o funcionamento correto dos beans dentro do jsp?

grato

dbconrado

Rapaiz… tô encanado com este myBean.myPojo, cara…

Tenta fazer assim:

&lt;jsp:setProperty name="myBean" property="myPojo.*"/&gt;

Ou

&lt;jsp:setProperty name="myBean" property="myPojo.idade"/&gt;
&lt;jsp:setProperty name="myBean" property="myPojo.nome"/&gt;

Abraços :slight_smile:

tebosoftware

Vou tentar fazer desse jeito ai e depois eu coloco o resultado, grato

tebosoftware

Eu testei colocar o myPojo.* só que da erro:

org.apache.jasper.JasperException: Cannot find any information on property 'myPojo.*' in a bean of type 'exemplo.MyClass'
	org.apache.jasper.runtime.JspRuntimeLibrary.internalIntrospecthelper(JspRuntimeLibrary.java:365)
	org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper(JspRuntimeLibrary.java:308)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:65)
	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)
tebosoftware

Quando eu mudo o method do form para get, eu nao vejo no endereco o ? + os parametros.

isso tem haver?

tebosoftware

Ninguém sabe o porque de não aparecer os parametros no endereço neste exemplo que estou passando? já tentei desativar os recursos do jsp e nada…

S

Kra, o problema é que na classe tua classe add.jsp vc não está passando os valores para a sua classe MyPojo.
Tente aí, e depois poste o resultado.

<% myBean.getMember().setNome(request.getParameter("nome")); %> <% myBean.getMember().setIdade(Integer.parseInt(request.getParameter("idade"))); %>

Nesse conjunto de vídeo aula que vc baixou vai encontrar mais problema, o autor não explica passo a passo.

Boa sorte.

Criado 5 de setembro de 2009
Ultima resposta 14 de out. de 2009
Respostas 10
Participantes 4