2011-05-17 123 views
0

我有4个不同的错误页面为我的检票申请。该WebRequestCycle.onRuntimeException方法是:WebRequestCycle.onRuntimeException重定向到默认错误页面

@Override 
public final Page onRuntimeException(Page cause, RuntimeException runtimeException) { 
    if (runtimeException instanceof EMSUserNotFoundException) { 
     return new EMSUserNotFoundExceptionPage(runtimeException); 
    } else if (runtimeException instanceof EMSUnreachableException) { 
     return new EMSUnreachableExceptionPage(runtimeException); 
    } else if (runtimeException instanceof UserActionPortInitializationException) { 
     return new UserActionPortInitializationExceptionPage(runtimeException); 
    } else { 
     return new GeneralRunTimeExceptionPage(runtimeException); 
    }  
} 

在运行时EMSUserNotFoundExceptionPage,EMSUnreachableExceptionPage,GeneralRunTimeExceptionPage被显示用于相应的情况。但是请求周期不会重定向到UserActionPortInitializationExceptionPage。我认为UserActionPortInitializationExceptionPage有一些麻烦,所以我从其他地方删除GeneralRunTimeExceptionPage并将UserActionPortInitializationExceptionPage放在那里,然后我看到了那个页面。

现在UserActionPortInitializationException是:

public class UserActionPortInitializationException extends RuntimeException { 

    private static final long serialVersionUID = 10129L; 

    private final static String message = "UserActionPort initialization failed"; 

    public UserActionPortInitializationException() { 
     super(message); 
    } 
} 

和代码片段,引发此例外是:

public static String getUserActionPortAddress() { 
     String userActionPortAddress = null; 
     ClassPathResource userActionPortAddressResource = new ClassPathResource("port-address.properties"); 
     Properties properties = null; 
     try { 
      properties = loadProperties(userActionPortAddressResource.getFile()); 
     } catch (Exception e) { 
      throw new UserActionPortInitializationException(); 
     } 

     if (properties != null) { 
      userActionPortAddress = properties.getProperty("port"); 
     } 

     if (userActionPortAddress == null) { 
      throw new UserActionPortInitializationException(); 
     } 

     return userActionPortAddress; 
    } 

    private static Properties loadProperties(File file) throws Exception { 
     InputStream is = null; 
     Properties props = new Properties(); 
     try { 
      is = new FileInputStream(file); 
      props.load(is); 
     } finally { 
      is.close(); 
     } 
     return props; 
    } 

当UserActionPortInitializationException由应用程序控制台抛出我得到:

Caused by: release.exception.UserActionPortInitializationException: UserActionPort initialization failed 

这意味着例外是thro通过该片段,但我不明白为什么页面不重定向。

更多信息:

UserActionPortInitializationExceptionPage.java:

public class UserActionPortInitializationExceptionPage extends ExceptionBasePage { 

public UserActionPortInitializationExceptionPage(RuntimeException runtimeException) { 
    super(runtimeException); 
} 

}

UserActionPortInitializationExceptionPage.html:

<html xmlns:wicket> 
<body> 
    <wicket:extend> 
     <h1 style="font-size: 1.5em; color: red;">UserActionPort initialization failed</h1> 
     <i>Please contact administrator</i> 
    </wicket:extend> 
</body> 

感谢和问候。

回答

0

你开始输出“致”:

Caused by: release.exception.UserActionPortInitializationException: UserActionPort initialization failed 

正因为如此,我想,你的异常是由一个又一个包裹。如果它被封装,你的if子句不能将它识别为UserActionPortInitializationException

如果发布完整的堆栈跟踪,我可以验证我的假设。