试图运行Wicket应用程序会得到404

时间:2015-04-15 10:33:39

标签: java-ee wicket

我的应用程序逻辑全部排序。它只是让应用程序运行"我,我遇到了问题。

我知道我需要(并且有)一个通过显示主页(在我的例子中称为" UserPage")来启动应用程序的类。但是,即使在正确填写我的web.xml并实现WicketApplication类之后,我仍然可以获得404。

两者的代码如下。有人可以通过两种方式帮助我:

•告诉我哪里出错(及其原因)

•两个文件需要的样子以及更正的位置。

提前致谢。

WicketApplication.java

    package com.me.textboxformtutorial;

import com.me.textboxformtutorial.UserPage;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.protocol.http.WebApplication;

public class WicketApplication extends WebApplication {

    @Override
     public Class<UserPage> getHomePage()
    {
        return UserPage.class;
    }

}

的web.xml

<web-app version="3.0"
  xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

<servlet>
    <servlet-name>WicketTextBoxExample</servlet-name>
    <servlet-class>UserPage</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>WicketTextBoxExample</servlet-name>
    <url-pattern>/textboxexample</url-pattern>
</servlet-mapping>

<filter>
        <filter-name>wicketFilter</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
            <param-name>applicationClassName</param-name>
            <param-value>com.me.textboxformtutorial.WicketApplication</param-value>
        </init-param>
    </filter>
</web-app>

1 个答案:

答案 0 :(得分:4)

这里的问题是Wicket页面不是servlet。 Wicket是一个框架,它添加了自己的抽象层来处理请求和呈现结果,因此您不需要在web.xml中单独声明所有页面。

设置Wicket的正确方法是将您定义的过滤器映射到所需的URL:

<filter-mapping>
    <filter-name>wicketFilter</filter-name>
    <url-pattern>/*</url-pattern> <!-- or /textboxexample/* if you want your application to map to that url -->
</filter-mapping>

删除这些条目:

<servlet>
     <servlet-name>WicketTextBoxExample</servlet-name>
     <servlet-class>UserPage</servlet-class>
 </servlet>

 <servlet-mapping>
     <servlet-name>WicketTextBoxExample</servlet-name>
     <url-pattern>/textboxexample</url-pattern>
 </servlet-mapping>

这会将给定网址的所有请求都提供给Wicket过滤器,该过滤器将处理并解析它们,并将它们移交给相应的页面。

如果你使用Maven,你可以从Wicket Quickstart Archetype (archetypeGroupId=org.apache.wicket, archetypeArtifactId=wicket-archetype-quickstart创建你的项目,为你完成所有这些。