7

I'm making changes in a very old application. which is using Spring MVC 4.

I need to post data from a form:form tag within in JSP for Spring controller. UI is fixed and I can only make changes at server side. Based upon a specific field in my submitted Form, I want to have the correct child Object instance in my Controller Handler method parameter.

For example,

class Payment {...} class CardPayment extends Payment{...} class CheckPayment extends Payment{...} 

In UI form, there will be a input value called paymentType. payment will be commandObject or ModelAttribute

I want my @PostMapping Controller to have the correct child object in the argument. I don't want to manually instantiate it in controller code.

@PostMapping public ModelAndView doSomePay(@ModelAttribute("payment") Payment paymentInput, BindingResult result){ 

Now I want this paymentInput object above to be of type CardPayment or checkPayment.

I tried to create a @initBinder and WebDatabinder but in reality I have close to 10 subclasses, do i need to create "Editor" for all those ?

If yes,whats the best way to create the propertyEditor short and quick

@InitBinder public void initBinder(WebDataBinder binder, HttpServletRequest request) { String paymentType = request.getParameter("paymentType"); PropertyEditor productEditor; //somehow I can find the correct child class that I need to see, for example CardPatment.class , Now how to do following binder.set(Product.class,productEditor); ??? } 

0

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.