web.xml modifications:
<servlet> <servlet-name>spring-dispatcher</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring-dispatcher</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping>
This servlet finds its configuration in the following bean configuration file: WEB-INF/spring-dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"> <beans> <bean id="simpleUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/search.action">searchController</prop> </props> </property> </bean> <bean id="searchController" class="nl.quel.view.SearchController"> <property name="objectFinder" ref="objectFinder"/> <property name="commandClass" value="nl..command.QueryCommand"/> <property name="queryFactory" ref="queryFactory"/> </bean> </beans>
We are using a CommandContoller is this example. Spring MVC tries to put all posted (form)variables in the object specified by the commandClass property.
public class SearchController extends AbstractCommandController { private Logger logger = LoggerFactory.getLogger(getClass()); private ObjectFinder objectFinder; private QueryFactory queryFactory; @Override protected ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object object, BindException bindException) throws Exception { QueryCommand queryCommand = (QueryCommand)object; if (queryCommand.getQuery() != null) { Query query = queryFactory.createQuery(queryCommand.getType(), queryCommand.getQuery()); SearchResult searchResult = objectFinder.find(query, queryCommand.getCurrentPageNumber(), queryCommand.getHitsPerPage()); request.setAttribute("searchResult", searchResult); } else { queryCommand = new QueryCommand(); } request.setAttribute("queryCommand", queryCommand); return new ModelAndView("/WEB-INF/jsp/search-result.jsp"); } public void setObjectFinder(ObjectFinder objectFinder) { this.objectFinder = objectFinder; } public void setQueryFactory(QueryFactory queryFactory) { this.queryFactory = queryFactory; } }