gpt4 book ai didi

java - 自定义@RequestParam类型处理程序

转载 作者:行者123 更新时间:2023-12-02 12:37:59 25 4
gpt4 key购买 nike

简单而简短的问题:有没有办法在 Spring MVC 中为自定义 @RequestParam 类型创建处理程序?

我知道我可以注册自定义 WebArgumentResolver,但我无法将它们绑定(bind)到参数。让我描述一下我的用例:

假设我已经定义了一个模型类Account:

public class Account {
private int id;
private String name;
private String email;
}

我的请求处理方法如下:

@RequestMapping("/mycontroller")
public void test(Account account1, Account account2) {
//...
}

如果我发出请求 mydomain.com/mycontroller?account1=23&account2=12,我希望自动从数据库加载 Account 对象,如果它们不存在,则返回错误。

最佳答案

是的,您应该注册一个自定义属性编辑器:

@InitBinder
public void initBinder(WebDataBinder binder) {
binder.registerCustomEditor(CustomType.class,
new CustomTypePropertyEditor());
}

更新:由于您需要访问 DAO,因此您需要将属性编辑器作为 spring bean。像这样的东西:

@Component
public class AccountPropertyEditor extends PropertyEditorSupport {
@Inject
private AccountDAO accountDao;
@Override
public void setAsText(String text) throws IllegalArgumentException {
setValue(accountDao.getById(Integer.parseInt(text)));
}

@Override
public String getAsText() {
return String.valueOf(((Account) getValue()).getId());
}
}

然后,在注册编辑器时,通过注入(inject)获取编辑器,而不是实例化它。

关于java - 自定义@RequestParam类型处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5700233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com