pom.xml
org.springframework.mobile
spring-mobile-device
1.1.2.RELEASE
Spring interceptor
<mvc:interceptors>
<!-- request.setAttribute(DeviceUtils.CURRENT_DEVICE_ATTRIBUTE = "currentDevice", org.springframework.mobile.device.Device); -->
<bean class="org.springframework.mobile.device.DeviceResolverHandlerInterceptor" />
<!-- request.setAttribute(SitePreferenceHandler.CURRENT_SITE_PREFERENCE_ATTRIBUTE = "currentSitePreference", org.springframework.mobile.device.site.SitePreference); -->
<bean class="org.springframework.mobile.device.site.SitePreferenceHandlerInterceptor" />
</mvc:interceptors>
SpringMobileParameterDecoratorMapper.java
package com.yoursite.common.mapper;
import java.util.Properties;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.mobile.device.site.SitePreference;
import org.springframework.mobile.device.site.SitePreferenceUtils;
import com.opensymphony.module.sitemesh.Config;
import com.opensymphony.module.sitemesh.Decorator;
import com.opensymphony.module.sitemesh.DecoratorMapper;
import com.opensymphony.module.sitemesh.Page;
import com.opensymphony.module.sitemesh.mapper.ConfigDecoratorMapper;
/**
* sitemesh 2.4 용 DecoratorMapper
* @author ysh3342
*
*/
public class SpringMobileParameterDecoratorMapper extends ConfigDecoratorMapper {
private static final Logger logger = LoggerFactory
.getLogger(SpringMobileParameterDecoratorMapper.class);
// private String decoratorName = null;
private static final String MOBILE_DECORATORNAME = "mobile";
private static final String TABLET_DECORATORNAME = "tablet";
public void init(Config config, Properties properties,
DecoratorMapper parent) throws InstantiationException {
super.init(config, properties, parent);
// decoratorName = properties.getProperty("decorator.name", "mobile");
// logger.debug("init decoratorName : {}", decoratorName);
}
public Decorator getDecorator(final HttpServletRequest request,
final Page page) {
SitePreference sitePreference = SitePreferenceUtils
.getCurrentSitePreference(request);
if (sitePreference != null) {
logger.debug("sitePreference.isNormal() : {}",
sitePreference.isNormal());
logger.debug("sitePreference.isMobile() : {}",
sitePreference.isMobile());
logger.debug("sitePreference.isTablet() : {}",
sitePreference.isTablet());
if (sitePreference.isMobile()) {
return getNamedDecorator(request, MOBILE_DECORATORNAME);
} else if (sitePreference.isTablet()) {
return getNamedDecorator(request, TABLET_DECORATORNAME);
} else {
return super.getDecorator(request, page);
}
}
logger.debug("super.getDecorator(request, page);");
return super.getDecorator(request, page);
}
}
sitemesh.xml
<property name="decorators-file" value="/WEB-INF/decorators.xml"/>
<decorator-mappers>
<mapper class="com.yoursite.common.mapper.SpringMobileParameterDecoratorMapper">
<param name="config" value="${decorators-file}"/>
</mapper>
</decorator-mappers>