What RedirectView does is sending a redirect header to the browser so browser does a complete reload of the page, as a result model does not get carried over there (as it is handled now by login controller with its own model).
What you can do is pass errors through request attributes:
In your views.properties:
loginController.(class)=org.springframework.web.servlet.view.InternalResourceView
loginController.url=/login.htm
Then instead of RedirectView return:
request.setAttribute("errors", "example errors");
return new ModelAndView("loginController");
And in your login controller check for this attribute and add it to the model.
Update: Without using views.properties:
request.setAttribute("errors", "example errors");
return new ModelAndView(new InternalResourceView("/login.htm"));
OR you can add (another) internal view resolver to your App-servlet.xml (Note from API: When chaining ViewResolvers, an InternalResourceViewResolver always needs to be last, as it will attempt to resolve any view name, no matter whether the underlying resource actually exists.):
<bean id="viewResolver2"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
</bean>
And then just use:
request.setAttribute("errors", "example errors");
return new ModelAndView("/login.htm");