gpt4 book ai didi

java - 在 Wicket 中使用可添加书签的页面的 Tomcat 错误页面

转载 作者:搜寻专家 更新时间:2023-11-01 03:38:37 24 4
gpt4 key购买 nike

我有这样的问题。

当收到 404 HTTP 错误时,我需要显示自定义错误页面。我正在使用 Wicket 1.4 和 Tomcat6。我已经在 web.xml 中实现了这些东西,比如

 <filter-name>wicket.filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>

<error-page>
<error-code>404</error-code>
<location>/404</location>
</error-page>

并在我的 WebApplication 中放置这样的代码:

mount(new HybridUrlCodingStrategy("/404", PageNotFound.class));

PageNotFound 类 isErrorPage 设置为 true,isVersioned 为 false 并且

    @Override
protected void configureResponse() {
super.configureResponse();
getWebRequestCycle().getWebResponse().getHttpServletResponse().setStatus(HttpServletResponse.SC_NOT_FOUND);
}

现在的问题是,当我输入一些无效的 url,比如 http://localhost:8080/myApp-war/invalidUrl ,我可以看到我的 PageNotFound。但是当我输入类似 http://localhost:8080/myApp-war/?wicket:bookmarkablePage=:com.mypackage.invalidUrl 的内容时,然后我就得到没有任何数据的空页面。

我注意到,在第一种情况下,tomcat 只显示“HTTP Status 404 -/myApp-war/invalidUrl”在另一种情况下,它显示略有不同的消息:“HTTP 状态 404 - 无法加载可 Collection 的页面

如何让两种情况显示相同的页面?也许这个<error-page>标签需要修改?如果您需要,我会为您提供更多信息。

最佳答案

您的代码和您的期望是完美的。这只是 Wicket 错误或 Tomcat 对 404 异常的错误理解。我猜它只是在 1.4.x 版本之前的 Wicket 中。

解决方法是重写AbstractRequestCycleProcessor中的代码,您可以在 WebApplication 类的工厂方法中重写它:

@Override

protected IRequestCycleProcessor newRequestCycleProcessor() {

return new WebRequestCycleProcessor() {

@Override
protected IRequestTarget resolveBookmarkablePage(final RequestCycle requestCycle,
final RequestParameters requestParameters) {
IRequestTarget target = super.resolveBookmarkablePage(requestCycle, requestParameters);
if(target == null) {
return target;
}
if(target instanceof WebErrorCodeResponseTarget) {
WebErrorCodeResponseTarget errorResponse = (WebErrorCodeResponseTarget) target;
if(HttpServletResponse.SC_NOT_FOUND == errorResponse.getErrorCode()) {
return null;
}
}
return target;
}

};

我将完整的工作示例放入我的 Wicket14 测试存储库 https://repo.twinstone.org/projects/WISTF/repos/wicket-examples-1.4/browse

关于java - 在 Wicket 中使用可添加书签的页面的 Tomcat 错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21309121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com