Java Wicket 1.5 Servlet API依赖关系
我们现在将一些古老的项目从Wicket 1.3.5迁移到一些较新的版本。在版本1.4.23中,一切或多或少都很清楚。问题出现在我们开始迁移到1.5.16时。最后,我创建了一个简单的测试应用程序来解决这个问题。但我感到惊讶的是,即使是简单的两页应用程序也没有达到它设计的目的——它在使用setResponsePage()的简单更改页面上显示了404 下面是一些测试应用程序代码、调试步骤和一些想法 应用程序类代码:Java Wicket 1.5 Servlet API依赖关系,java,servlets,wicket,wicket-1.5,Java,Servlets,Wicket,Wicket 1.5,我们现在将一些古老的项目从Wicket 1.3.5迁移到一些较新的版本。在版本1.4.23中,一切或多或少都很清楚。问题出现在我们开始迁移到1.5.16时。最后,我创建了一个简单的测试应用程序来解决这个问题。但我感到惊讶的是,即使是简单的两页应用程序也没有达到它设计的目的——它在使用setResponsePage()的简单更改页面上显示了404 下面是一些测试应用程序代码、调试步骤和一些想法 应用程序类代码: public class WicketTestApplication extends
public class WicketTestApplication extends WebApplication {
public WicketTestApplication() {
super();
}
public static WicketTestApplication get() {
return (WicketTestApplication) Application.get();
}
@Override
public Class<? extends Page> getHomePage() {
return FirstPage.class;
}
protected void init() {
super.init();
getResourceSettings().getStringResourceLoaders().add(new ComponentStringResourceLoader());
getResourceSettings().getStringResourceLoaders().add(new ClassStringResourceLoader(this.getClass()));
getResourceSettings().setUseDefaultOnMissingResource(true);
getResourceSettings().getLocalizer().setEnableCache(false);
getMarkupSettings().setCompressWhitespace(true);
getMarkupSettings().setStripComments(true);
getMarkupSettings().setStripWicketTags(true);
getDebugSettings().setAjaxDebugModeEnabled(true);
getRequestCycleSettings().setResponseRequestEncoding("UTF-8");
getRequestCycleSettings().setRenderStrategy(RenderStrategy.REDIRECT_TO_BUFFER);
}
}
公共类WickettesApplication扩展了WebApplication{
公共WicketTestApplication(){
超级();
}
公共静态Wicket应用程序get(){
return(WicketTestApplication)Application.get();
}
@凌驾
公共类Wicket 1.5应该可以与Servlet 2.5配合使用
关于您的路径问题:
1) 如果使用mountPage(“second”,SecondPage.class)
在应用程序#init()中装入页面,则Wicket应重定向到/second
2) 如果您没有显式装载它,Wicket应该重定向到/Wicket/bookmarkable/com.your.package.SecondPage
在这两种情况下,如果页面是有状态的(因为您使用的是Ajax组件),那么它将添加?123
,其中123
是一个数字-页面id
在Wicket中,我看不到servlet API的版本与此功能之间有任何关系。Hi@martin-g,是的,当页面未装入Application.init()中时,就是这种情况。无论是3.0还是3.1 API版本,在第二次请求处理结束时,UrlRenderer类(请参阅我提到的三个步骤)重定向到com.SomePackage.SecondPage?123
,但使用3.0 API,我在响应头中重定向到http…testapp/com.SomePackage.SecondPage?123
,wicket返回404。使用3.1 API,我在响应头中已经看到了完整路径http…testapp/wicket/bookmarkable/com.SomePackage.SecondPage?123
,它可以工作.我不知道为什么会这样,对不起!
public class FirstPage extends MainPage {
public FirstPage() {
Form form = new Form("formId");
add(form);
WebMarkupContainer message = new WebMarkupContainer("message");
form.add(message);
AjaxButton nextBtn = new AjaxButton("nextBtn", new CompoundPropertyModel<String>("Next Page")) {
private static final long serialVersionUID = 1L;
@Override
public void onSubmit(AjaxRequestTarget target, Form<?> form) {
RequestCycle.get().setResponsePage(SecondPage.class);
}
};
form.add(nextBtn);
}
}