0

Web サイトの 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;

       }

 }

チュートリアルによると、ビュー rssViewer はクラス CustomRssViewer に属しているため、ディスパッチャ サーブレットで次のコード行を記述する必要があります。

   <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

その例の BeanNameViewResolver と組み合わせて ContentNegotiatingViewResolver を使用する必要があります。既存の 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>

RSS ではなく、atom を使用していることに注意してください。ただし、考え方は同じです。また、彼らは順序を設定しません(あなたがすべきです)。

于 2012-06-18T13:21:00.810 に答える