0

我正在尝试为我的网站创建 RSS 提要。我遵循 mkyong (http://www.mkyong.com/spring-mvc/spring-3-mvc-and-rss-feed-example/) 的教程,这非常有用。根据本教程,我创建了一个模型类和以下类

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;

       }

 }

根据教程, View 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>

在模板中,我不知道要声明什么以及在 put-attribute 中声明什么。因为直到现在,在模板中我用来声明特定 jsp 存在的方向。像这样的东西:

   template="/WEB-INF/pages/mypage.jsp"

而且在视图属性中,我不知道我应该声明什么。

提前感谢您的任何评论或回复。

4

1 回答 1

0

您应该将 ContentNegotiatingViewResolver 与该示例的 BeanNameViewResolver 结合使用。只需将现有 BeanNameViewResolver 的 order 属性声明为 1,并将新 ContentNegotiatingViewResolver 的 order 属性设置为 0。

然后,您应该配置 ContentNegotiatingViewResolver 以使用适当的 RSS 视图,并为 RSS 设置媒体类型。

这是 Spring Docs 中的一个示例:

 <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>

请注意,他们使用的是 atom,而不是 RSS,但想法是相同的。他们也没有设置顺序(你应该这样做)。

于 2012-06-18T13:21:00.810 回答