Varun Achar
Varun Achar

Reputation: 15109

Data binding without using spring taglib

My html is built without using the spring taglib and now I'd like to bind the parameters of the form to a object in my controller.

Currently my form looks like this

<form>
<input type="text" name="frAccUserMgmt.userName"/>
<input type="password" name="frAccUserMgmt.userPwd"/>
</form>

The relevant part of my object is

Class FrAccUserMgmt {
    private String userName;
    private Strint userPwd;
    // getter and setter
}

My controller is

@RequestMapping("login")
Public ModelAndView doLogin(FrAccUserMgmt frAccUserMgmt) {
    //code
}

How do I go about binding it. Currently the binding doesn't happen. I just get an empty object in my code.

Upvotes: 3

Views: 1446

Answers (2)

crackerplace
crackerplace

Reputation: 5475

This can also be done by adding the @ModelAttribute for the parameter bean that should be populated with the request parameters.

As per spring docs

http://docs.spring.io/spring/docs/3.1.x/spring-framework-reference/html/mvc.html#mvc-ann-modelattrib-method-args (16.3.3.8 Using @ModelAttribute on a method argument)

An @ModelAttribute on a method argument indicates the argument should be retrieved from the model. If not present in the model, the argument should be instantiated first and then added to the model. Once present in the model, the argument's fields should be populated from all request parameters that have matching names. This is known as data binding in Spring MVC, a very useful mechanism that saves you from having to parse each form field individually.

Upvotes: 0

nickdos
nickdos

Reputation: 8414

You could try including the BindingResult class in the method signature and then see if there are any binding errors:

@RequestMapping("login")
Public ModelAndView doLogin(FrAccUserMgmt frAccUserMgmt, BindingResult result) {
    if (result.hasErrors()) {
        logger.warn("BindingResult errors: " + result.toString());
    }
    //code
}

Remove the frAccUserMgmt part from the form field names. Spring will automatically find the command object to bind the request parameters based on the getters and setters defined in the command object.

Upvotes: 1

Related Questions