Olá pessoal,
Sou novo com Spring MVC e gostaria de uma dica para um problema de conversão.
Possuo um formulário representado por uma entidade Empresa no BD , que entre seus atributos existe um tipo para Consorcio, outra entidade. Criei um converter para transformar as opções de uma comboBox (strings) do formulário Empresa para a respectiva entidade consórcio (representada pelo seu id no BD) e salvá-la. O converter salva ok o id da consórcio na tabela empresa, porém quando entro na tela de alteração a comboBox não inicializa com o respectivo nome do consórcio antes salvo. O que estou errando?
Dados:
Classe Converter mapeada no applicationContext do spring
public class StringToConsorcio implements GenericConverter {
private Set<ConvertiblePair> convertibleTypes;
@Override
public Object convert(Object source, TypeDescriptor sourceType, TypeDescriptor targetType) {
if (source == null || "".equals(source.toString().trim())){
return null;
} else {
Consorcio c = new Consorcio();
c.setId(Long.parseLong(source.toString()));
return c;
}
}
@Override
public Set<ConvertiblePair> getConvertibleTypes() {
if (convertibleTypes == null) {
convertibleTypes = new HashSet<ConvertiblePair>();
convertibleTypes.add(new ConvertiblePair(String.class, Consorcio.class));
}
return convertibleTypes;
}
}
Classe Controller
...
@RequestMapping(value = "/inclusoes/empresas/{id}/form", method = RequestMethod.GET)
public String getEmpresa(@PathVariable("id") Long id, ModelMap modelMap) {
List<Consorcio> consorcioList = new ArrayList<Consorcio>();
consorcioList = carregaConsorcios();
modelMap.addAttribute("consorcioList", consorcioList);
modelMap.addAttribute("empresa", empresaDao.localizar(id));
return "inclusoes/empresas/update";
}
public List<Consorcio> carregaConsorcios(){
List<Consorcio> consorcios = new ArrayList<Consorcio>();
Consorcio c1 = new Consorcio(1L, null, "Consorcio1", null);
Consorcio c2 = new Consorcio(2L, null, "Consorcio2", null);
Consorcio c3 = new Consorcio(3L, null, "Consorcio3", null);
consorcios.add(c1);
consorcios.add(c2);
consorcios.add(c3);
return consorcios;
}
...
uso da comboBox na view:
...
<span>Consórcio:</span>
<form:select path="consorcio" >
<form:option value="" label="-- Selecione--"></form:option>
<form:options items="${consorcioList}" itemLabel="nome" itemValue="id" />
</form:select>
...
Pesquisei por exemplosde relacionamento de entidades como este mas nenhum encontrado abrange isso.
Obrigado!