У меня есть приложение Spring, которое предоставляет REST API через аннотацию @RestController
, и это работает очень хорошо. Теперь я хочу интегрировать некоторый вид в свой проект, и я хочу использовать Apache Wicket, но у меня проблемы. Я создал WebApplication
класс:Конфигурирование Apache Wicket весной MVC
public class WicketApp extends WebApplication {
@Override
protected void init() {
super.init();
super.getComponentInstantiationListeners().add(new SpringComponentInjector(this));
}
@Override
public Class<? extends Page> getHomePage() {
return Index.class;
}
}
и файлы Index.java и index.html в той же папке.
Но это не работает, и у меня есть ошибка 404. Это мой файл web.xml:
<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" 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_2_5.xsd">
<!-- The definition of the Root Spring Container shared by all Servlets
and Filters -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.myapp.AppConfig</param-value>
</context-param>
<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<filter>
<filter-name>TestApplication</filter-name>
<filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
<init-param>
<param-name>applicationClassName</param-name>
<param-value>com.myapp.web.wicket.WicketApp</param-value>
</init-param>
</filter>
<!-- Processes application requests -->
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
<filter-mapping>
<filter-name>TestApplication</filter-name>
<url-pattern>/app/*</url-pattern>
</filter-mapping>
В моем файле конфигурации я добавил этот метод:
@Configuration
@EnableWebMvc
@EnableTransactionManagement
@ComponentScan({ "com.myapp.*" })
@PropertySource(value = { "classpath:hibernate.properties" })
public class AppConfig {
//other configurations
@Bean
public WicketApp application() {
return new WicketApp();
}
Я действительно не знаю, где проблема ...
Весенняя версия - 4.1.4 Версия Apache Wicket 7.1.0 Я использую Maven.
Какой url дает 404? Ваша конфигурация выглядит хорошо. Ответ Михира также действителен, но не обязательно. Вы видите в своем журнале сообщение, которое Wicket запустила в режиме РАЗВИТИЯ? –
/myapp/app/Index.html Я вижу сообщение – zuno
Нет ничего, что можно было бы прослушать в "index.html". Вам нужно использовать '#mountPage (" index.html ", getHomePage())'. –