2013-06-18 2 views
0

봄 mvc에서 누군가에 대해 설명 할 수 있기를 바란다. 스프링 MVC를 사용한 스프링 변환기에 대한 설명 - 이해할 수 없다.

내 도메인 클래스 :

@Entity 
@Table(name = "TIME_SHEET") 
public class TimeSheet implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.AUTO) 
@Column(name = "ID_TIME_SHEET") 
private Long id; 

@NotNull(message = "timesheet.cadastro.horainicio.obrigatorio") 
@Temporal(TemporalType.TIME) 
@Column(name = "INICIO", nullable = false) 
private Date horaInicio; 

@NotNull(message = "timesheet.cadastro.horafim.obrigatorio") 
@Temporal(TemporalType.TIME) 
@Column(name = "FIM", nullable = false) 
private Date horaFim; 

@Column(name = "LATITUDE", nullable = true) 
private Double latitude; 

@Column(name = "LONGITUDE", nullable = true) 
private Double longitude; 

@Size(max = 300,message = "timesheet.cadastro.observacao.acimaDoPermitido") 
@Column(name = "OBSERVACAO", nullable = true) 
private String observacao; 

//@NotNull(message = "timesheet.cadastro.dia.obrigatorio") 
@ManyToOne(cascade = javax.persistence.CascadeType.ALL) 
@JoinColumn(name = "ID_DIAS") 
private Dias dia; 

//@NotNull(message = "timesheet.cadastro.usuario.obrigatorio") 
@ManyToOne(cascade = javax.persistence.CascadeType.ALL) 
@JoinColumn(name = "ID_USUARIO") 
private Usuario usuario; 
... 

내 클래스 계산기 : 내 springmvc.xml에서

public class IdToUsuarioConverter implements Converter<String, Usuario> { 

    @Autowired 
    private IusuarioService usuarioService; 

    public Usuario convert(String id) { 
     return usuarioService.buscaPorId(Long.valueOf(id)); 
    } 
} 

:

<mvc:annotation-driven conversion-service="conversionService"/> 

<bean id="conversionService" 
     class="org.springframework.context.support.ConversionServiceFactoryBean"> 
    <property name="converters"> 
     <set> 
      <bean class="br.com.infowhere.timeSheet.converter.IdToUsuarioConverter"/> 
     </set> 
    </property> 
</bean> 

내가 문제가 없습니다,하지만 내 질문은 : 1) 내 변환기가 작동 할 때?

<form:select path="user" items="${userList}" multiple="false" /> 

HTML :

<select id="user" name="user"> 
    <option value="1">User 1</option> 
    <option value="2">User 2</option> 
</select> 

어떤 시간에 내 컨버터가 작동합니다 나는 비슷한 하나 개의 목록이 양식을 게시 할 예정입니다 2) 내 .jsp를?

미안하지만 변환기에 대해 이해하려고합니다.

감사합니다.

답변

1

변환기가 컨트롤러의 ID를 Usario 개체로 변환합니다. 예를 들어 :

@Controller 
public class MyController { 

    @RequestMapping("/showUsario") 
    public String showUsario(@RequestParam("id") Usario usario, Model model) { 
     model.addAttribute("usario", usario); 
     return "showUsario"; 
    } 
} 

그런 요청에/showUsario 컨버터를 사용하여 Usario에 "123"를 문자열로 변환합니다 ID = 123?. 변환기가 없다면 메서드 매개 변수에 Usario 대신 String id를 넣고 수동으로 id를 Usario로 변환해야합니다. 이렇게하면 Spring은 변환기를 사용하여 그것을 수행합니다.

+0

hummmmm great! 그럼 이걸 RequestMethod.POST에 사용할 수 없습니다. – user812612

+0

원하는 것을 따라 다릅니다. 일반적으로 ModelAttribute로 주석 된 메소드를 사용하여 Usario를로드 한 다음 POST 처리기 메소드에서 원하는 경우 폼의 데이터를로드 된 모델 오브젝트에 바인드 할 수 있습니다. 여기에 ModelAttribute 주석 관련 섹션 (특히 계정 예)을 읽어보십시오. http://static.springsource.org/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-ann-modelattrib- 방법 –

관련 문제