【问题标题】:@PathVariable Spring Controller@PathVariable 弹簧控制器
【发布时间】:2014-10-28 15:33:51
【问题描述】:

我最近正在开发一个使用 thymeleaf 作为视图解析器的 Spring Web 应用程序,在开发我的控制器时,我遇到了一个新情况:

我不太确定,但是从视图传递的@Pathvariable 可以是一个对象吗? (准确地说是模型的复合键?)

我以前用过id,但是大部分都是简单的int id,我只是想知道是否可以传递一个对象(这是我的对象的主键),而不是简单的int id?

谢谢你

【问题讨论】:

  • 我认为你可以......唯一的问题是你必须告诉 spring 如何将字符串值(路径值将是一个字符串)转换为对象...... spring 使用属性编辑器(通过initBinder)来做......所以你可以注册一个可以进行转换的新属性编辑器,那么它应该是可能的

标签: spring spring-mvc


【解决方案1】:

您可以使用 Spring PropertyEditor 或 Spring Converter 参见Spring Convertor

例子

public class CategoryConverter implements Converter<String, Category>{

@Autowired
private CategoryService categoryService;

public Category convert(String id) {
    return categoryService.findById(Long.valueOf(id));
}
}

但是在将对象直接保存到数据库时可能会遇到一些问题。

【讨论】:

  • 我明白你的意思,但问题是我的模型有一个复合主键,这意味着,要找到整个对象,我需要两个变量,而不是像你放的例子那样。而且我不太明白在哪里使用这个转换器:在控制器中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
相关资源
最近更新 更多