Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
  protected ModelAndView processFormSubmission(final HttpServletRequest request, final HttpServletResponse response, final Object object,
        final BindException errors) throws Exception {
        final Credentials credentials = (Credentials)object;
        
        this.credentialsBinder.bind(request, credentials);

        final String ticketGrantingTicketId = this.centralAuthenticationService.createTicketGrantingTicket(credentials);

We need to look carefully at the "object" argument. The object here is a Command. LoginController extends SimpleFormController which extends AbstractFormController which extends BaseCommandController.

In BaseCommandController, we have:

Code Block
titleBaseCommandController getCommand()

	/**
	 * Retrieve a command object for the given request.
	 * <p>Default implementation calls createCommand. Subclasses can override this.
	 * @param request current HTTP request
	 * @return object command to bind onto
	 * @see #createCommand
	 */
	protected Object getCommand(HttpServletRequest request) throws Exception {
		return createCommand();
	}
Code Block
titleCurrent CredentialsBinder interface
/**
 * Interface for a class that can bind items stored in the request to a particular
 * credentials implementation.  This allows for binding beyond the basic
 * JavaBean/Request parameter binding that is handled by Spring automatically.
 * 
 * @author Scott Battaglia
 * @version $Id: CredentialsBinder.java,v 1.3 2005/01/25 20:19:12 sbattaglia Exp $
 *
 */
public interface CredentialsBinder {
	/**
	 * Method to allow manually binding attributes from the request object to properties of
	 * the credentials.  Useful when there is no mapping of attribute to property for the 
	 * usual Spring binding to handle.
	 * 
	 * @param request The HttpServletRequest from which we wish to bind credentials to
	 * @param credentials The credentials we will be doing custom binding to.
	 */
	void bind(HttpServletRequest request, Credentials credentials);
	
	/**
	 * 
	 * Method to determine if a CredentialsBinder supports a specific class or not.
	 * 
	 * @param clazz The class to determine is supported or not
	 * @return true if this class is supported by the CredentialsBinder, false otherwise.
	 */
	boolean supports(Class clazz);
}