我尝试为我的网站创建RSS提要,并使用Spring MVC提供RSS提要和apache tile。
问题描述:
我遵循mkyong的教程(http://www.mkyong.com/spring-mvc/spring-3-mvc-and-rss-feed-example/),这非常有用。根据这个教程中,我创建一个模型类和以下类我尝试为我的网站创建RSS提要,并使用Spring MVC提供RSS提要和apache tile。
public class CustomRssViewer extends AbstractRssFeedView{
@Override
protected void buildFeedMetadata(){
//some code
}
@Override
protected List<Item> buildFeedItems(){
//some code
}
}
最后控制器类
@Controller
public class RssController {
@RequestMapping(value="/rssfeed", method = RequestMethod.GET)
public ModelAndView getFeedInRss() {
//set the RSS content
ModelAndView mav = new ModelAndView();
mav.setViewName("rssViewer");
mav.addObject("feedContent", items);
return mav;
}
}
根据视图rssViewer所属的类CustomRssViewer教程,所以我需要把它写在调度servlet的以下几行代码:
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<bean id="rssViewer" class="com.mkyong.common.rss.CustomRssViewer" />
我的问题是,我使用Apache的瓷砖。所以rssViewer无法识别,因为我没有增强它的瓷砖定义。我真的不知道我该怎么做。例如我需要写一些东西,如下:
<definition name="rssViewer" template="?">
<put-attribute name="title" value=""/>
<put-attribute name="content" value=""/>
</definition>
在模板我不知道该怎么在奚落attribute.Because在模板我用声明的方向申报以及到现在为止一个特定的jsp存在。这样的事情:
template="/WEB-INF/pages/mypage.jsp"
而且在视图属性我不知道我应该申报。
在此先感谢您的任何意见或回复。
答
您应该使用ContentNegotiatingViewResolver与该示例的BeanNameViewResolver结合使用。只需将已存在的BeanNameViewResolver的order属性声明为1,并将新的ContentNegotiatingViewResolver的order属性设置为0.
然后,您应该配置ContentNegotiatingViewResolver以使用适当的RSS视图,并将媒体类型设置为RSS。
这里距离Spring文档的例子:
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
<property name="mediaTypes">
<map>
<entry key="atom" value="application/atom+xml"/>
<entry key="html" value="text/html"/>
<entry key="json" value="application/json"/>
</map>
</property>
<property name="viewResolvers">
<list>
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</list>
</property>
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
</list>
</property>
</bean>
注意,他们使用的原子,没有RSS,但这个想法是一样的。他们也没有设置顺序(你应该这样做)。