Java – customize webargumentresolver, such as @ pathvariable

I want to use a custom webargumentresolver as the ID – > entity If I use the request parameter, it is simple enough: use the parameter key to determine the entity type and find it accordingly

But I want it to be like the @ pathvariable annotation

For example

http://mysite.xzy/something/enquiryId/itemId This method will be triggered

@RequestMapping(value = "/something/{enquiry}/{item}")
public String method(@Coerce Enquiry enquiry,@Coerce Item item)

@The course annotation tells webargumentresolver to use a specific service according to its type

The question is which part of the URI belongs to the entity

Someone can explain how the pathvariable annotation does this Can I use my custom annotation to simulate it

thank you.

Solution

You can use @ initbinder to let spring know how to cast a given string to your custom type

What you want is this:

@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));
        }
    });
}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>