Ola estou tentando fazer um conversor estou tendo uma pequena dificuldade, ele simplesmente não funciona.
Se alguém puder ajudar?
segue codigo simplificado
Classe que quero receber no controller
class User{
@ManyToOne(cascade = CascadeType.ALL)
private District district;
}
Conversor
package br.com.codnamemusic.util;
import java.text.MessageFormat;
import java.util.ResourceBundle;
import br.com.caelum.vraptor.Convert;
import br.com.caelum.vraptor.Converter;
import br.com.caelum.vraptor.converter.ConversionError;
import br.com.caelum.vraptor.ioc.RequestScoped;
import br.com.codnamemusic.persistence.DistrictDao;
import br.com.domain.District;
@Convert(District.class)
@RequestScoped
public class DistrictConverter implements Converter<District>{
private DistrictDao districtDao;
public DistrictConverter(DistrictDao districtDao) {
this.districtDao=districtDao;
}
@Override
public District convert(String value, Class<? extends District> type,
ResourceBundle bundle) {
if (value == null || value.equals("")) {
return null;
}
try {
Long id=Long.parseLong(value);
return districtDao.findById(id);
} catch (Exception e) {
throw new ConversionError(MessageFormat.format("Erro ao converter Distrito", value));
}
}
}
Como to chamando no html
<div id="district">
<label>Selecione o bairro: </label>
<select id="user.district">
#foreach($item in $districtList)
<option value="$item.id">$item.nome</option>
#end
</select>
</div>