我有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>
感谢和问候。