[RESOLVIDO] JSP, sem resultado?

7 respostas
L

Bem, sou iniciante em Java e JSP, estou assistindo umas videos-aulas e lendo o livro "Use a Cabeça! Servlets & JSP", mas "travei" em uma parte =/

no resultado estou recebendo: "The name is null" e "The age is 0" (eu fiz exatamente como na video aula =/). myPojo.java
package example;

public class myPojo {
    private String name;
    private int age;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }


}
myClass.java
package example;

public class myClass {
    private myPojo member;
    
    public myClass(){
        member = new myPojo();
    }

    public myPojo getMember() {
        return member;
    }

    public void setMember(myPojo member) {
        this.member = member;
    }

}
index.jsp
<%@page contentType="text/html" pageEncoding="UTF-8" import= "example.*" %>
<jsp:useBean class="example.myClass" id="myBean" scope="session"/>
<jsp:setProperty name="myBean.member" property="*"/>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>INDEX</title>
    </head>
    <body>
        <h1>JSP PAGE INDEX</h1>
        <br>
        <form action="/LLApp/add.jsp" method="get">
            ENTER THE NAME <input size="30" id="name"> <br>
            ENTER THE AGE <input size="10" id="age"> <br>
            <input type="submit">
        </form>
    </body>
</html>
add.jsp
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<jsp:useBean class="example.myClass" id="myBean" scope="session"/>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <% String msg = "The Name is: "+myBean.getMember().getName() + "<br>The Age is: "+myBean.getMember().getAge();
         out.print(msg);
        %>
    </body>
</html>

7 Respostas

Pedro_Amorim

Olá @lucas.zul
Vamos lá! Primeiro quero te falar para nomear suas classes iniciando com letras maiúsculas entao nao faça myPojo.java e sim MyPojo.java.
Primeiro no index.jsp

&lt;%@page contentType="text/html" pageEncoding="UTF-8"%&gt;  
&lt;html&gt;  
    &lt;head&gt;  
        &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;  
        &lt;title&gt;INDEX&lt;/title&gt;  
    &lt;/head&gt;  
    &lt;body&gt;  
        &lt;h1&gt;JSP PAGE INDEX&lt;/h1&gt;  
        <br>  
        &lt;form action="/LLApp/add.jsp" method="get"&gt;  
            ENTER THE NAME &lt;input size="30" id="name" name="name" &gt; <br>  
            ENTER THE AGE &lt;input size="10" id="age" name="age" &gt; <br>  
            &lt;input type="submit"&gt;  
        &lt;/form&gt;  
    &lt;/body&gt;  
&lt;/html&gt;

Apesar de vc ter colocado a atributo “id” vc DEVE colocar tbm a atributo “name”. É do “name” que o jsp pega os valores. Note que não foi criado nenhum “useBean”.
No add.jsp

&lt;%@page contentType="text/html" pageEncoding="UTF-8" import= "example.*" %&gt;  
&lt;jsp:useBean class="example.MyPojo" id="MyBean" scope="session"/&gt; 
&lt;jsp:useBean class="example.MyClass" id="MyBean2" scope="session"/&gt; 
&lt;jsp:setProperty name="MyBean" property="name"/&gt;  
&lt;jsp:setProperty name="MyBean" property="age"/&gt; 

&lt;html&gt;  
    &lt;head&gt;  
        &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt;  
        &lt;title&gt;JSP Page&lt;/title&gt;  
    &lt;/head&gt;  
    &lt;body&gt;  
        &lt;h1&gt;Hello World!&lt;/h1&gt;  
        &lt;%
            MyBean2.setMember(MyBean);
            String msg = "The Name is: " + MyBean2.getMember().getName() + "&lt;br&gt;The Age is: " + MyBean2.getMember().getAge();
            out.print(msg);
        %&gt;  
    &lt;/body&gt;  
&lt;/html&gt;

Não dá pra fazer

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

como vc queria. Entao se vc quiser utilizar ainda as duas classes. Use o setProperty no pojo primeiro. e depois use o bean do “MyClass” para preencher o “member” como foi feito.
A proposito, em que pagina do livro vc viu este exemplo aí?
Caso ainda tenha duvida é estamos aí?

L

fiz do mesmo jeito que você mostrou, mas agora da um erro:

Lembrando que eu sou novato nisso. Vlw por ajudar cara, agradeço muito.
esse exemplo não tem no livro, é uma exemplo de uma video-aula do DevMedia.

Pedro_Amorim

Ok… vc executou o projeto quantas vezes?
notou que eu mudei os nomes das classes?
No campo idade vc digitou um número mesmo? =D
Um detalhezinho, nas classes que vc utiliza useBean precisam implementar Serializable

MyClass.java

package example;

import java.io.Serializable;

public class MyClass implements Serializable{

    private MyPojo member;

    public MyClass() {
        member = new MyPojo();
    }

    public MyPojo getMember() {
        return member;
    }

    public void setMember(MyPojo member) {
        this.member = member;
    }
}

MyPojo.java

package example;

import java.io.Serializable;

public class MyPojo implements Serializable{

    private String name;
    private int age;

    public MyPojo() {
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
L

hum… era um erro com os nomes das classes mesmo.
implementei as classes com Serializable, mas só estar retornando o “name”, a “age” ainda vem 0 (sim eu digitei um numero).

nota se que no link apareceu um parametro: localhost:8080/LLApp/add.jsp?name=JOSE

Pedro_Amorim

Já eh um começo…agora é com vc… olha direito os atributos nos “inputs”. Se na classe vc tem um atributo age, no formulario tu tem que ter o name=“age” tbm senao, nao vai! Se no form o atributo name for diferente: name=“idade” vc faz assim:

&lt;jsp:setProperty name="MyBean" property="age" param="idade"/&gt;

Sacou? :roll:

L

hum… agora sim deu certo cara…

eu tava fazendo besteira lol
input size=“10” id=“age” age=“age”

Vlw cara muito obrigado, quebro um galhão…

Pedro_Amorim

Boa sorte nos estudos… e quando puder ensine alguem tbm :lol:

Criado 19 de maio de 2011
Ultima resposta 20 de mai. de 2011
Respostas 7
Participantes 2