我试图为我的Spring3.2.0、Spring、JSF2.1.12应用程序实现异常处理。
到目前为止,我可以使用异常处理程序流捕获大多数异常:
<persistence-context/>
<decision-state id="handleException" >
<if test="deviceManager.isMobileDevice()" then="mobileException" else="generalException"/>
</decision-state>
<view-state id="generalException" view="../views/exception/generalException.xhtml">
<on-entry>
<evaluate expression="exceptionManager.extractMessages(flowExecutionException, rootCauseException)" result="viewScope.exc"/>
</on-entry>
</view-state>
<view-state id="mobileException" view="../views/exception/mobileException.xhtml">
<on-entry>
<evaluate expression="exceptionManager.extractMessages(flowExecutionException, rootCauseException)" result="viewScope.exc"/>
</on-entry>
</view-state>
<global-transitions>
<transition on-exception="java.lang.Exception" to="handleException"/>
</global-transitions>但是这不能处理NoSuchFlowDefinitionException和类似的问题,如果我很清楚的话,它们发生在流执行之外。
有人知道如何处理这些例外吗?
此外,我还需要将异常映射到流,而不是像error.html这样的静态视图。这是因为我的系统需要在后台做一些额外的工作来加载页面信息。
任何帮助都会受到极大的感谢,祝你今天愉快,
马蒂亚
<<<<<编辑>>>>>
我添加了一个SimpleMappingExceptionResolver来捕获NoSuchFlowDefinitionException:
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException">
exceptionFlow
</prop>
</props>
</property>
</bean>异常被捕获,但解析器将目标流转换为视图,寻找一个视图:WEB/ExctionFlow.xhtml-此视图不存在,因为我需要处理流exceptionFlow.xml的异常。
com.sun.faces.context.FacesFileNotFoundException: /WEB-INF/exceptionView.xhtml Not Found in ExternalContext as a Resource我怎么能把它重定向到流而不是视图呢?我尝试添加一个在视图上映射的控制器:
@Controller
@RequestMapping("/WEB-INF/exceptionFlow.xhtml")
public class ExceptionController {
@RequestMapping(method = RequestMethod.GET)
public String redirectToPublicFlowGet(ModelMap model) {
return "spring/flows/public";
}
@RequestMapping(method = RequestMethod.POST)
public String redirectToPublicFlowPost(ModelMap model) {
return "spring/flows/public";
}
}但是不管我在请求映射上做了什么(我尝试了“/WEB/ExctionFlow.xhtml”、"/exceptionFlow.xhtml“、"exceptionFlow.xhtml”。"exceptionFlow“--代码从不访问方法(我放置了一些调试断点)。
有人知道我做错了什么吗?
谢谢,祝你今天愉快
发布于 2013-09-10 12:21:53
你可以通过改变
<prop key="org.springframework.webflow.definition.registry.NoSuchFlowDefinitionException">
exceptionFlow
</prop>至
redirect:/exceptionFlow这将为给定流创建新的流执行,但您将丢失有关异常的信息.
https://stackoverflow.com/questions/16775665
复制相似问题