java – 自定义WebArgumentResolver,如@PathVariable
发布时间:2020-12-14 05:44:06 所属栏目:Java 来源:网络整理
导读:我想使用自定义WebArgumentResolver作为id – 实体.如果我使用请求参数,则足够简单:使用参数键确定实体类型并相应地查找. 但我希望它像@PathVariable注释. 例如. http://mysite.xzy/something/enquiryId/itemId将触发此方法 @RequestMapping(value = "/some
我想使用自定义WebArgumentResolver作为id – >实体.如果我使用请求参数,则足够简单:使用参数键确定实体类型并相应地查找.
但我希望它像@PathVariable注释. 例如. http://mysite.xzy/something/enquiryId/itemId将触发此方法 @RequestMapping(value = "/something/{enquiry}/{item}") public String method(@Coerce Enquiry enquiry,@Coerce Item item) @Coerce注释会告诉WebArgumentResolver根据它的类型使用特定服务. 问题在于哪个uri部分属于实体. 有人可以解释PathVariable注释如何做到这一点.是否可以使用我的自定义注释来模拟它. 谢谢. 解决方法
您可以使用
@InitBinder 让spring知道如何将给定的String强制转换为您的自定义类型.
你想要的东西是这样的: @RequestMapping(value = "/something/{enquiry}") public String method(@PathVariable Enquiry enquiry) {...} @InitBinder public void initBinder(WebDataBinder binder) { binder.registerCustomEditor(Enquiry.class,new PropertyEditorSupport() { @Override public String getAsText() { return ((Enquiry) this.getValue()).toString(); } @Override public void setAsText(String text) throws IllegalArgumentException { setValue(new Enquiry(text)); } }); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |