Hi all!
I have a question about error handling with Spring MVC, Tiles and SpringJS. I have some pages that have fragments to be reloaded using ajax calls. That is working fine, the problem is I want to change that behaviour when an error is thrown.
I have defined a HandlerExceptionResolver which intercepts every exception and redirect to the correct error page. If the exception occurs in a RequestMapping call within Spring MVC this is working fine but I can't make it work with ajax calls because it just tries to render the page inside the fragment is told to in the first place.
This is my code:
servlet-context.xml. Here I define the tiles view resolver and the exception handler among other things. The view resolver has some caching code inside, that's why it's extended by another class. Maybe I could put something here to get the behaviour I want?
This is the jsp where the call is madeCode:<bean id="viewResolver" class="com.bbvacompass.monarch.web.servlet.view.custom.CustomAjaxUrlBasedViewResolver"> <property name="viewClass" value="org.springframework.webflow.mvc.view.FlowAjaxTilesView" /> <property name="mappings" ref="custom-redirect-views"/> </bean> <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> <property name="definitions"> <list> <value>/WEB-INF/**/tiles.xml</value> <value>classpath*:/WEB-INF/**/*.tiles.xml</value> </list> </property> </bean> <bean class="com.bbvacompass.monarch.web.servlet.interceptor.CustomHandlerExceptionResolver"/>
This is the tiles.xmlCode:<form id="tfilter" action="<c:url value="/custom/summary/postedTransactions" />" > <label id="lposted" for="posted" class="checked"><fmt:message key="account_summary.custom.posted" /> </label> <input type="radio" id="posted" name="table_type" /> <label id="lpending" for="pending"><fmt:message key="account_summary.custom.pending" /></label> <input type="radio" id="pending" name="table_type" /> <input type="hidden" name="transfersType" id="transfersType" > <input type="hidden" name="selected_account" id="selected_account"> </form> <script type="text/javascript"> Spring.addDecoration(new Spring.AjaxEventDecoration({elementId: "posted" ,event:"onclick",formId:'tfilter',params: { fragments: "transactions"}})); Spring.addDecoration(new Spring.AjaxEventDecoration({elementId: "pending",event:"onclick",formId:'tfilter',params: { fragments: "transactions"}})); </script> <form id="select_actions" action="<c:url value="/custom/summary/updateSlider" />"> <select id="s_actions"> <option value="0"><fmt:message key="account_summary.custom.actions" /></option> <option id="option1" value="within"><fmt:message key="account_summary.custom.action.transfer.within" /></option> <option id="option2" value="between"><fmt:message key="account_summary.custom.action.transfer.between" /></option> <option id="option3" value="billpay"><fmt:message key="account_summary.custom.action.billpay" /></option> <option id="option4" value="simple_payments"><a href="<c:url value="/popMoney?origin=popMoneyMenu"/>"><fmt:message key="account_summary.custom.action.simple" /></a></option> <option id="option5" value="download"><fmt:message key="account_summary.custom.action.download" /></option> </select> </form> <tiles:insertAttribute name="transactions" />
The mapping for the /custom/summary/postedTransactions uri now just throws an exceptionCode:<definition name="summary-body" template="/WEB-INF/views/custom-monarch/account-summary/account-summary.jsp" > <put-attribute name="script" value="/WEB-INF/views/custom-monarch/account-summary/script-account-summary.jsp" /> <put-attribute name="slider" value="/WEB-INF/views/custom-monarch/account-summary/slider.jsp" /> <put-attribute name="search" value="/WEB-INF/views/custom-monarch/account-summary/search.jsp" /> <put-attribute name="transactions" value="/WEB-INF/views/custom-monarch/account-summary/transactions.jsp" /> </definition>
Code:@RequestMapping(value="/postedTransactions", method={RequestMethod.GET}) public String getPostedTransactions(HttpServletRequest request, ModelMap model, @ModelAttribute("iteProfile") String iteProfile, @ModelAttribute("searchForm") SearchCmd searchForm, @ModelAttribute("selectedAccount")AccountListAdapterBean selectedAccount) throws Exception{ throw new Exception("asdfdsafsdf"); }


Reply With Quote