我有一个问题,我无法解决.
好吧,我们假设我们正在按一个按钮从网页(可能是jsp,xhtml,portlet ......)调用一个方法(在一个支持bean中).
<h:form>
....
<h:inputText value="#{errorManager.errorTestDataBean.errore00}" />
<h:commandButton id="go" value="GO" action="#{errorManager.triggerError}" />
...
</h:form>
Run Code Online (Sandbox Code Playgroud)
表单随其值一起提交.
我们还假设在行动过程中我们会遇到问题(例外).
我编写(并注册)了一个ActionListener,它将捕获未处理的异常(并且会做一些事情来处理它):
public class ExceptionHandlingActionListener extends ActionListenerImpl
{
public void processAction(ActionEvent event)
{
try
{
super.processAction(event); //+THE ERROR HAPPENS IN THE SUPER CLASS+
}
catch(Exception exception)
{
exception.printStackTrace();
......... do something here ...............
FacesContext facesContext = FacesContext.getCurrentInstance();
Application application = facesContext.getApplication();
NavigationHandler navigationHandler = application.getNavigationHandler();
navigationHandler.handleNavigation(facesContext, null, "error"); /* FORWARD TO AN ERROR PAGE */
facesContext.renderResponse();
}
}
}
Run Code Online (Sandbox Code Playgroud)
它工作得很好......但是......我需要知道提交表单中的数据(是?).
我怎样才能获得这些信息?我想要一个通用的方法,因为错误可能发生在应用程序的任何地方(我真的不知道clientId或其他有关对象的特殊信息).
获取所有发布的数据并将其写入数据库也是可以的:我将在以后分析数据!
不幸的是,我们仍然在JSF 1.2. …