Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Spring-MVC-I-can';我不明白_Spring_Spring Mvc - Fatal编程技术网

用Spring-MVC-I-can';我不明白

用Spring-MVC-I-can';我不明白,spring,spring-mvc,Spring,Spring Mvc,我希望有人能解释一下SpringMVC中的转换器 我的域类: @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.c

我希望有人能解释一下SpringMVC中的转换器

我的域类:

@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;
...
我的类转换器:

public class IdToUsuarioConverter implements Converter<String, Usuario> {

    @Autowired
    private IusuarioService usuarioService;

    public Usuario convert(String id) {
        return usuarioService.buscaPorId(Long.valueOf(id));
    }
}
public类IdToUsuarioConverter实现转换器{
@自动连线
私人服务;
公用Usuario转换(字符串id){
返回usuarioService.buscaPorId(Long.valueOf(id));
}
}
在my springmvc.xml中:

<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-)我的转换器何时工作? 2-)My.jsp将发布一个表单,其中我有一个类似的列表:

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

HTML:


用户1
用户2
我的转换器什么时候工作

对不起,我想了解一下转换器


谢谢

转换器将把控制器中的id转换为Usario对象。 例如:

@Controller
public class MyController {

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

然后对/showUsario?id=123的请求将使用转换器将字符串“123”转换为Usario。如果没有转换器,则必须将字符串id(而不是Usario)放入方法参数中,并手动将id转换为Usario。这样,Spring就可以使用转换器为您完成此任务。

嗯,太好了!那我就不能用这个来RequestMethod.POST了,好吗?这取决于你想做什么。通常,您可以使用带有ModelAttribute注释的方法来加载Usario,然后在POST处理程序方法中,如果您愿意,可以将表单中的数据绑定到加载的模型对象。阅读此处有关ModelAttribute注释的相关章节(尤其是帐户示例):
@Controller
public class MyController {

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