Problema com struts

5 respostas
L

Olá a todos!

Meu problema é o seguinte: tenho um objeto bean como este:

public class Bean implements Serializable {
    //Outros atributos
    /* Usuário que realizou a da entrevista */
    private User user;

    //métodos de acesso
}

Meu form possui um campo select da seguinte forma:

<html:select property="user.id" style="width:281px" styleClass="box_interno">
    <html:option value="">Selecione um Entrevistador</html:option>
    <html:options collection="users" property="id" labelProperty="name" />
</html:select>

O objeto User possui o atributo id.
Quando vou acessar a página do form acima ocorre o seguinte erro:

ERROR [[jsp]] ServletException in ‘/pages/app/main.jsp’: Null property value for ‘user’

Tentei iniciar o atributo apontado como Null dentro do construtor do bean, mas não fui feliz.

Agradeço a todos leitores pela atenção.

Luiz Carlos

5 Respostas

fabiozoroastro

Olha soh, vc está com o seu user null. Daí então vc está fazendo isso no jsp:

que gerará a chamada: user.getId(). Mas como o user está null, é a mesma coisa de fazer: null.getId().
null invocando algum método gera NullPointerException.

Vc precisa fazer assim:

Classe Bean:

// Armazenará o id selecionado
private String idUsuario;
private List<User> users;
//get e set

no seu jsp:

<html:select property="idUsuario">
  <html:option value="">-- Selecionar --</html:option>
  <html:optionsCollection property="users" label="nome" value="id" />
</html:select>

Beleza?
Abraço!

L

Obrigado pela resposta!

Entendi o que escreveu, mas o seguinte: não tem como setar o id daquela forma que eu estava tentando não (property=“user.id”)? Deixar o id somente encapsulado em User e o bean do form contendo o mesmo objeto (User)?

Obrigado.

Luiz Carlos.

fabiozoroastro

Vc pode fazer do jeito que estava tentando. Mas pra fazer, vc tem que criar uma instância de user primeiro.

vc pode fazer assim oh:

private User user;
private List<User> user;

public User getUser(){
   if(null == user)
      user = new User();
}

Aí não vai dar nullPointer. Mas vc tem que lembrar q dessa forma vc não tem o a instância do seu objeto lá do banco de dados não. Vc simplismente tem uma instância qualquer de user com o valor id setado.

:slight_smile:

L

Sei…

Eu já tinha tentado isto só que no contrutor e tinha pensado que funcionaria também, mas o que não ocorreu. Tentei novamente agora no método get e também não “funfou”.

Sabe o que pode ser?

Obrigado pelo retorno e atenção.

Luiz Carlos

fabiozoroastro

Tem que debugar aí então pra ver se o nullpointer está ocorrendo neste momento mesmo Luiz. :confused:

Abraço.

Criado 14 de fevereiro de 2007
Ultima resposta 14 de fev. de 2007
Respostas 5
Participantes 2