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

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

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

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

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

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

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:

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

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)

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

isso tem haver?

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…

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.