Spring MVC 3 e converter (GenericConverter)

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!

Eu estava com um problema parecido…
O problema estava no Converter…

tenho um que está100% agora…

import java.util.Map;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

import br.gov.ms.tce.model.AbstractEntity;
 
 
@FacesConverter(value = "entityConverter")
public class EntityConverter implements Converter {
 
    public Object getAsObject(FacesContext ctx, UIComponent component,
            String value) {
        if (value != null) {
            return this.getAttributesFrom(component).get(value);
        }
        return null;
    }
 
    
    public String getAsString(FacesContext ctx, UIComponent component,
            Object value) {
 
        if (value != null && ! "".equals(value)) {
            AbstractEntity entity = (AbstractEntity) value;
 
            if (entity.getId() != null) {
                this.addAttribute(component, entity);
 
                if (entity.getId() != null) {
                    return String.valueOf(entity.getId());
                }
                return (String) value;
            }
        }
        return "";
    }
 
    private void addAttribute(UIComponent component, AbstractEntity o) {
        this.getAttributesFrom(component).put(o.getId().toString(), o);
    }
 
    private Map<String, Object> getAttributesFrom(UIComponent component) {
        return component.getAttributes();
    }
 
}

Só escrever o equals e hash nos models…

	public boolean equals(Object other) {
		return other instanceof Pessoa && (id != null) ? id
				.equals(((Pessoa) other).id) : (other == this);
	}

	public int hashCode() {
		return id != null ? this.getClass().hashCode() + id.hashCode() : super
				.hashCode();
	}

Veja se da certo…

Muito obrigado alan, vou testar.

Depois posto os resultados.

Abraços!

Edit: Depois que vi, detalhe que vc usa jsf e eu estou aprendendo com o Spring…