Boa tarde pessoas,
Estou tentando realizar o binding de algumas checkboxes em um formulário html (usando a taglib do spring framework disponível em <%@ taglib prefix=“form” uri=“http://www.springframework.org/tags/form”%> ) para uma lista presente em um objeto.
Classe Framework:
[code]package models;
public class Framework {
private Long id;
private String nome;
public Framework(Long id, String nome) {
this.id = id;
this.nome = nome;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}[/code]
Classe Usuario (contendo um Arraylist de frameworks que o usuário usa):
[code]package br.gov.sp.mococa.models;
import java.util.List;
public class Usuario {
private String nome;
private String login;
private String senha;
private boolean ativo;
private List<Framework> frameworksFavoritos;
private String sexo;
private String pais;
private String habilidadesJava;
public Usuario() {
}
public Usuario(String nome, String login, String senha, boolean ativo,
List<Framework> frameworksFavoritos, String sexo, String pais,
String habilidadesJava) {
super();
this.nome = nome;
this.login = login;
this.senha = senha;
this.ativo = ativo;
this.frameworksFavoritos = frameworksFavoritos;
this.sexo = sexo;
this.pais = pais;
this.habilidadesJava = habilidadesJava;
}
public String getNome() {
return nome;
}
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
public boolean isAtivo() {
return ativo;
}
public void setAtivo(boolean ativo) {
this.ativo = ativo;
}
public List<Framework> getFrameworksFavoritos() {
return frameworksFavoritos;
}
public void setFrameworksFavoritos(List<Framework> frameworksFavoritos) {
this.frameworksFavoritos = frameworksFavoritos;
}
public String getSexo() {
return sexo;
}
public void setSexo(String sexo) {
this.sexo = sexo;
}
public String getPais() {
return pais;
}
public void setPais(String pais) {
this.pais = pais;
}
public String getHabilidadesJava() {
return habilidadesJava;
}
public void setHabilidadesJava(String habilidadesJava) {
this.habilidadesJava = habilidadesJava;
}
}[/code]
JSP:
[code]<%@ taglib prefix=“form” uri=“http://www.springframework.org/tags/form”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@ page language=“java” contentType="text/html; charset=ISO-8859-1"
pageEncoding=“ISO-8859-1”%>
Nome: | ||
Login: | ||
Senha: | ||
Ativo? | ||
Frameworks Favoritos: | ${framework.nome} | |
Sexo: | ||
País: | ||
Habilidades Java: | ||
</form:form>
[/code]Controller (método GET da página):
[code]@RequestMapping(value = “novo-usuario”, method = RequestMethod.GET)
public String carregarPaginaNovoUsuario(HttpServletRequest request, Model model, @ModelAttribute(“usuario”) Usuario usuario ) {
Framework fw1 = new Framework(1L, "SPRING");
Framework fw2 = new Framework(2L, "STRUTS 2");
Framework fw3 = new Framework(3L, "JSF");
List<Framework> listaFrameworksFavoritos = new ArrayList<>();
listaFrameworksFavoritos.add(fw1);
listaFrameworksFavoritos.add(fw2);
listaFrameworksFavoritos.add(fw3);
usuario.setFrameworksFavoritos(listaFrameworksFavoritos);
String[] listaHabilidadesJava = {"NENHUMA", "HIBERNATE"};
List<String> listaPaises = new ArrayList<>();
listaPaises.add("ARGENTINA");
listaPaises.add("BRASIL");
model.addAttribute("listaHabilidadesJava", listaHabilidadesJava);
model.addAttribute("listaPaises", listaPaises);
model.addAttribute("usuario", usuario);
return "novo-usuario";
}[/code]
Controller (método POST da página):
[code]@RequestMapping(value = “novo-usuario”, method = RequestMethod.POST)
public String salvarUsuario(Usuario usuario, BindingResult result, HttpServletRequest request, Model model) {
for (int i = 0; i < usuario.getFrameworksFavoritos().size(); i++) {
System.out.println("FRAMEWORKS FAVORITOS: " + usuario.getFrameworksFavoritos().get(i));
}
return "sucesso";
}[/code]
Porém, dá NullPointerException na linha 4 do último código - onde pego os frameworks do usuario, ou seja, a lista tá vazia.
Alguém pode dar uma luz, estou há 3 dias nisso.
Grato desde já, abraços.