Proble em <jsp:useBean

16 respostas
BrunoBastosPJ

esse erro sai em tempo de execução

The value for the useBean class attribute site.usuarios.Usuario is invalid

alguem pode me dizer o que pode ser, depois se for preciso eu posto o código

Valeu

16 Respostas

BrunoBastosPJ

aquele problema foi resolvido. Mudei o class= para type=

mas agora quando eu rodo esta aparecendo essa exeção

alguem sabe o que é?

D

Olá, vc mudou o class para type e ficou sem class? Type é a refereência, class é o objeto, o class deve existir pois fica tipo:
TYPE tipo = new CLASS();

Se vc colocar só o type fica:
TYPE tipo = new ???;

BrunoBastosPJ

como ficaria um use bean para eu usar um objeto qualquer então?

e como eu chamaria os métodos dele dentro do meu jsp?

S

Posta o código do bean e do JSP ae.

BrunoBastosPJ
<jsp:useBean id="usuario" scope="page" class="site.usuarios.Usuario" />

<%
  String nome = (String)request.getParameter("nome");
  String email = (String)request.getParameter("email");
  String login = (String)request.getParameter("login");
  String senha = (String)request.getParameter("senha");

   // usuario = new Usuario(nome,email,login,senha);
    usuario.setEmail(email);
    usuario.setNome(nome);
    usuario.setLogin(login);
    usuario.setSenha(senha);
S

Não entendi.

Você tá querendo criar um bean com os parâmetros do request ou tá recebendo um já existente?

BrunoBastosPJ

eu estou recebendo essas variaveis em um request e quero jogar o valor delas dentro do bean… depois vai para um bd

S

Desse jeito, você tá tentando receber um bean. Como ele não existe, tá criando um vazio.

Tenta assim:

<jsp:useBean id="usuario" class="site.usuarios.Usuario"> <jsp:setProperty name="usuario" property="email" param="email" /> </jsp:useBean>
Isso para cada propriedade.

Como o nome do parâmetro é igual à propriedade, você pode omitir o param:

<jsp:setProperty name="usuario" property="email" />

Ou ainda:

<jsp:setProperty name="usuario" property="*" />

Essa última só precisa uma vez.

BrunoBastosPJ

o novo erro

The value for the useBean class attribute site.usuarios.Usuario is invalid.

o jsp que eu mando o request

<form method="POST" action="Cadastrando.jsp">
<table>

<tr>

      <th colspan="2">Cadastrar</th>

</tr>

<tr>

      <td>Nome: </td>

      <td><input type="text" name="nome" /></td>
      

 </tr>

<tr>

<td colspan="2" align="center"><input type="submit" value="Enviar" /></td>

      </tr>

</table>

</form>

e a classe que recebe

<jsp:useBean id="usuario" class="site.usuarios.Usuario" />
<jsp:setProperty name="usuario" property="nome" param="nome" />

out.println("Nome "+usuario.getNome());
S

E a classe do bean?
O que você passou no form?

BrunoBastosPJ
class Usuario{
  String nome;
  //set e get
}

passei “bruno” no form

R

nao use

usuario.getNome();

use:

<jsp:getProperty name="usuario" property="nome"/>

Flw…

BrunoBastosPJ

tipo para usar essa tag

<jsp:setProperty name="usuario" property="email" />

eu tenho que ter a variavel email publica ou privada com get e set para ele entender?

S

Isso aí invoca o método setEmail(), e não a variável em si.

Deu erro com o jsp:getProperty?

M

Para cada propriedade você deve ter um get e um set… só para evitar problemas evite nomes como NConta, DCadastro… quando você usa recursos como este sempre gera problemas para variáveis como esta.

:okok:

carlos.e.a

Revivendo aqui o topico, alguem pode me ajudar com uma duvida parecida: Preciso usar da seguinte forma:

<jsp:useBean id=“dao” type=“modelo.ContatoDAO”></jsp:useBean>

Como podem ver, nao setei o class justamente pq a classe é “package” e só quem tem acesso a ela é a Factory. Fiz isso para evitar que alguem tente instanciar a implementação diretamente sem passar pela factory.

Entao depois estou fazendo:

<c:set var=“dao” value="${Factory.contatoDAO }"></c:set>

Aparentemente isso esta correto, mas ele esta lançando:

javax.servlet.ServletException: java.lang.InstantiationException: bean dao not found within scope

Alguma ideia do porque disso? :roll:

Desde já agradeço! :wink:

Criado 17 de junho de 2006
Ultima resposta 1 de jun. de 2012
Respostas 16
Participantes 6