You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rave.apache.org by at...@apache.org on 2012/08/14 16:03:17 UTC
svn commit: r1372887 - in /rave/sandbox/content-services:
demo-portal/src/main/webapp/WEB-INF/
demo-portal/src/main/webapp/WEB-INF/jsp/hmvc/
demo-portal/src/main/webapp/WEB-INF/jsp/views/
demo-portal/src/main/webapp/WEB-INF/jsp/views/hmvc/ rave-web-hmv...
Author: ate
Date: Tue Aug 14 14:03:16 2012
New Revision: 1372887
URL: http://svn.apache.org/viewvc?rev=1372887&view=rev
Log:
RAVE-698: merging HMVC based request dispatching back into main rave configuration
This required *replacing* the spring <mvc:annotation-driven/>tag as using that 'convenience' tag cannot be simply extended/overridden.
This is a major annoyance many have encountered and reported upon before, but so far Springframework hasn't come up with a sufficient *xml* based alternative.
So manually redefining the mvc:annotation-driven behavior is the only feasible solution right now.
Added:
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml (with props)
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/views/
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/views/hmvc/
- copied from r1371267, rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/hmvc/
Removed:
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/hmvc-dispatcher-servlet.xml
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/jsp/hmvc/
Modified:
rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java
rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java
rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java
Added: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml?rev=1372887&view=auto
==============================================================================
--- rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml (added)
+++ rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml Tue Aug 14 14:03:16 2012
@@ -0,0 +1,238 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ -->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:context="http://www.springframework.org/schema/context"
+ xmlns:oxm="http://www.springframework.org/schema/oxm"
+ xmlns:p="http://www.springframework.org/schema/p"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
+ http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
+ http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
+ http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm.xsd">
+
+ <!--
+ Scans the classpath of this application for @Components to deploy as beans
+ NOTE: only the controllers (api and controller packages) are scanned here in dispatcher-servlet.xml. All other
+ org.apache.rave.portal.web.<packages> are scanned in web-applicationContext.xml. This is to prevent duplicate
+ bean scanning of o.a.r.p.web.* components which can cause problems.
+ -->
+ <context:component-scan base-package="org.apache.rave.portal.web.controller"/>
+ <context:component-scan base-package="org.apache.rave.portal.web.api"/>
+ <context:component-scan base-package="org.apache.rave.portal.web.hmvc"/>
+
+ <!-- Configures the @Controller programming model -->
+
+ <!-- Inline replacement of Spring <mvc:annotation-driven/> to be able to override/extend its behavior.
+ This inline replacement has as downside that next versions of Spring might require alignment, but the
+ alternative is writing custom BeanPostProcessor(s) which are difficult to support customizations of our own (through XML).
+
+ Derived/reverse-enginered from org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport and
+ org.springframework.web.servlet.config.DefaultServletHandlerBeanDefinitionParser
+ -->
+ <util:list id="interceptors">
+ <bean class="org.springframework.web.servlet.handler.ConversionServiceExposingInterceptor">
+ <constructor-arg>
+ <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
+ </constructor-arg>
+ </bean>
+ <bean class="org.apache.rave.portal.web.interceptors.CommonModelHandlerInterceptor"/>
+ <!--
+ On pre-handle, resolve the device that originated the web
+ request and put that information into the ServletRequest object.
+ By default it will use the LiteDeviceResolver which only
+ gives you very basic information, basically "is this a
+ mobile device or not?". A more advanced WurflDeviceResolver
+ can be used if you need to get more detailed information about
+ the device such as manufacturer, model, screen size, etc.
+ -->
+ <bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor"/>
+ </util:list>
+
+ <util:list id="messageConverters">
+
+ <!-- register-defaults
+
+ <bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter" />
+ <bean class="org.springframework.http.converter.StringHttpMessageConverter">
+ <property name="writeAcceptCharset" value="false"/>
+ </bean>
+ <bean class="org.springframework.http.converter.ResourceHttpMessageConverter" />
+ <bean class="org.springframework.http.converter.xml.SourceHttpMessageConverter" />
+ <bean class="org.springframework.http.converter.xml.XmlAwareFormHttpMessageConverter" />
+ -->
+
+ <!-- if class javax.xml.bind.Binder present
+ <bean class="org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter" />
+ -->
+
+ <!-- if class com.fasterxml.jackson.databind.ObjectMapper present
+ <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter" />
+ -->
+
+ <!-- else if class org.codehaus.jackson.map.ObjectMapper present
+ <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />
+ -->
+
+ <!-- if class com.sun.syndication.feed.WireFeed present
+ <bean class="org.springframework.http.converter.feed.AtomFeedHttpMessageConverter" />
+ <bean class="org.springframework.http.converter.feed.RssChannelHttpMessageConverter" />
+ -->
+
+ <!-- end register-defaults -->
+
+ <bean id="stringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter">
+ <property name="supportedMediaTypes">
+ <list>
+ <bean class="org.springframework.http.MediaType">
+ <constructor-arg index="0" value="text"/>
+ <constructor-arg index="1" value="plain"/>
+ <constructor-arg index="2" value="UTF-8"/>
+ </bean>
+ <bean class="org.springframework.http.MediaType">
+ <constructor-arg index="0" value="text"/>
+ <constructor-arg index="1" value="javascript"/>
+ <constructor-arg index="2" value="UTF-8"/>
+ </bean>
+ </list>
+ </property>
+ </bean>
+ <bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
+ <property name="objectMapper">
+ <bean class="org.apache.rave.portal.web.model.MaterializedBeanObjectMapperFactory"/>
+ </property>
+ </bean>
+ <bean primary="true" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
+ <property name="marshaller" ref="xmlMarshaller"/>
+ <property name="unmarshaller" ref="xmlMarshaller"/>
+ </bean>
+ </util:list>
+
+ <bean name="hmvcHandlerMapping" class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodMapping">
+ <property name="order" value="-1"/>
+ <property name="interceptors" ref="interceptors"/>
+ </bean>
+
+ <bean id="requestMappingHandlerMapping" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
+ <property name="order" value="0" />
+ <property name="interceptors" ref="interceptors"/>
+ </bean>
+
+
+ <!-- Inline replacement of Spring <mvc:view-controller/> -->
+ <bean id="org.springframework.web.servlet.config.viewControllerHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
+ <property name="order" value="1"/>
+ <property name="urlMap">
+ <map>
+ <!-- Forwards requests to the "/" resource to the "page" view -->
+ <entry key="/">
+ <bean class="org.springframework.web.servlet.mvc.ParameterizableViewController">
+ <property name="viewName" value="page"/>
+ </bean>
+ </entry>
+ </map>
+ </property>
+ </bean>
+
+ <bean id="beanNameHandlerMapping" class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
+ <property name="order" value="2" />
+ <property name="interceptors" ref="interceptors"/>
+ </bean>
+
+ <bean name="hmvcHandlerAdapter" class="org.apache.rave.portal.web.hmvc.HmvcHandlerMethodHandlerAdapter">
+ <property name="order" value="-1"/>
+ <property name="webBindingInitializer">
+ <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
+ <property name="conversionService">
+ <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
+ </property>
+ <property name="validator">
+ <!-- depends on JSR-303
+ <bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
+ -->
+ <null/>
+ </property>
+ </bean>
+ </property>
+ <property name="messageConverters" ref="messageConverters"/>
+ </bean>
+
+ <bean id="requestMappingHandlerAdapter" class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
+ <property name="order" value="0"/>
+ <property name="webBindingInitializer">
+ <bean class="org.springframework.web.bind.support.ConfigurableWebBindingInitializer">
+ <property name="conversionService">
+ <bean class="org.springframework.format.support.FormattingConversionServiceFactoryBean"/>
+ </property>
+ <property name="validator">
+ <!-- depends on JSR-303
+ <bean class="org.springframework.validation.beanvalidation.LocalValidatorFactoryBean"/>
+ -->
+ <null/>
+ </property>
+ </bean>
+ </property>
+ <property name="messageConverters" ref="messageConverters"/>
+ </bean>
+
+ <bean id="httpRequestHandlerAdapter" class="org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter"/>
+ <bean id="simpleControllerHandlerAdapter" class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>
+
+ <bean id="handlerExceptionResolver" class="org.springframework.web.servlet.handler.HandlerExceptionResolverComposite">
+ <property name="order" value="0"/>
+ <property name="exceptionResolvers">
+ <list>
+ <bean class="org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver">
+ <property name="messageConverters" ref="messageConverters"/>
+ </bean>
+ <bean class="org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver"/>
+ <bean class="org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver"/>
+ </list>
+ </property>
+ </bean>
+
+ <!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory -->
+ <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
+ <property name="prefix" value="/WEB-INF/jsp/views/"/>
+ <property name="suffix" value=".jsp"/>
+ </bean>
+
+ <oxm:jaxb2-marshaller id="xmlMarshaller">
+ <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaUser"/>
+ <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaPage"/>
+ <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaRegion"/>
+ <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaRegionWidget"/>
+ <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaRegionWidgetPreference"/>
+ <oxm:class-to-be-bound name="org.apache.rave.portal.model.JpaWidget"/>
+ <oxm:class-to-be-bound name="org.apache.rave.portal.web.model.RegionWidgetPreferenceListWrapper"/>
+ </oxm:jaxb2-marshaller>
+
+ <bean id="tilesConfigurer" class="org.springframework.web.servlet.view.tiles2.TilesConfigurer">
+ <property name="definitions">
+ <list>
+ <value>/WEB-INF/tiles-defs.xml</value>
+ </list>
+ </property>
+ </bean>
+
+ <bean id="tilesViewResolver" class="org.springframework.web.servlet.view.UrlBasedViewResolver" p:order="0">
+ <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
+ </bean>
+
+</beans>
Propchange: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/dispatcher-servlet.xml
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml (original)
+++ rave/sandbox/content-services/demo-portal/src/main/webapp/WEB-INF/web.xml Tue Aug 14 14:03:16 2012
@@ -68,25 +68,10 @@
<load-on-startup>1</load-on-startup>
</servlet>
- <!-- Handles all requests into the application -->
+ <!-- Handles all + hmvc requests into the application -->
<servlet>
<servlet-name>dispatcher</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
-
- <!-- Handles hmvc requests into the application -->
- <servlet>
- <servlet-name>hmvc-dispatcher</servlet-name>
<servlet-class>org.apache.rave.portal.web.hmvc.servlet.HmvcDispatcherServlet</servlet-class>
- <init-param>
- <param-name>detectAllHandlerMappings</param-name>
- <param-value>false</param-value>
- </init-param>
- <init-param>
- <param-name>detectAllHandlerAdapters</param-name>
- <param-value>false</param-value>
- </init-param>
<load-on-startup>1</load-on-startup>
</servlet>
@@ -100,12 +85,6 @@
<servlet-name>dispatcher</servlet-name>
<url-pattern>/app/*</url-pattern>
</servlet-mapping>
-
- <servlet-mapping>
- <servlet-name>hmvc-dispatcher</servlet-name>
- <url-pattern>/hmvc/*</url-pattern>
- </servlet-mapping>
-
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/index.html</url-pattern>
Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyBodyController.java Tue Aug 14 14:03:16 2012
@@ -29,6 +29,6 @@ public class MyBodyController {
@CController(name = "content", type = MyContentController.class)
})
public String render() {
- return "mybody";
+ return "hmvc/mybody";
}
}
Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyContentController.java Tue Aug 14 14:03:16 2012
@@ -23,6 +23,6 @@ public class MyContentController {
@Hmvc @RequestMapping
public String render() {
- return "mycontent";
+ return "hmvc/mycontent";
}
}
Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyFooterController.java Tue Aug 14 14:03:16 2012
@@ -23,6 +23,6 @@ public class MyFooterController {
@Hmvc @RequestMapping
public String render() {
- return "myfooter";
+ return "hmvc/myfooter";
}
}
Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyHeaderController.java Tue Aug 14 14:03:16 2012
@@ -23,6 +23,6 @@ public class MyHeaderController {
@Hmvc @RequestMapping
public String render() {
- return "myheader";
+ return "hmvc/myheader";
}
}
Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyMenuController.java Tue Aug 14 14:03:16 2012
@@ -23,6 +23,6 @@ public class MyMenuController {
@Hmvc @RequestMapping
public String render() {
- return "mymenu";
+ return "hmvc/mymenu";
}
}
Modified: rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/main/java/org/apache/rave/portal/web/hmvc/example/MyPageController.java Tue Aug 14 14:03:16 2012
@@ -32,7 +32,7 @@ public class MyPageController {
@CController(name = "footer", type = MyFooterController.class)
})
public String renderPage() {
- return "mypage";
+ return "hmvc/mypage";
}
@RequestMapping("/mypage1")
@@ -42,11 +42,11 @@ public class MyPageController {
@CController(name = "footer", type = MyFooterController.class)
})
public String renderPage1() {
- return "mypage";
+ return "hmvc/mypage";
}
@Hmvc @RequestMapping
public String renderPage2() {
- return "mypage";
+ return "hmvc/mypage";
}
}
Modified: rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java
URL: http://svn.apache.org/viewvc/rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java?rev=1372887&r1=1372886&r2=1372887&view=diff
==============================================================================
--- rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java (original)
+++ rave/sandbox/content-services/rave-web-hmvc/src/test/java/org/apache/rave/portal/web/hmvc/HmvcHandlerMethodMappingByConfigTest.java Tue Aug 14 14:03:16 2012
@@ -88,7 +88,7 @@ public class HmvcHandlerMethodMappingByC
assertTrue("body should have two nodes", bodyKids.size() == 2);
assertTrue("body should have menu", bodyKids.contains("menu"));
assertTrue("body should have content", bodyKids.contains("content"));
- assertViewName(mav, "mypage");
+ assertViewName(mav, "hmvc/mypage");
}