2012-06-17 66 views
0

我遵循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" 

而且在视图属性我不知道我应该申报。

在此先感谢您的任何意见或回复。

回答

0

您应该使用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,但这个想法是一样的。他们也没有设置顺序(你应该这样做)。