日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

使用 Mashups4JSF 生成和消费 Mashup Feed

發(fā)布時(shí)間:2025/5/22 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用 Mashups4JSF 生成和消费 Mashup Feed 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

在早先的一篇關(guān)于 Mashups4JSF 的文章中(參見(jiàn)?參考資料),我們了解了 Mashups4JSF 是什么,如何配置它,以及如何使用它構(gòu)建一個(gè)有用的 mashup 應(yīng)用程序。我們還了解了如何在 WebSphere Application Server V7.0 上結(jié)合使用庫(kù)和 Apache MyFaces 2.0 以及 IBM JWL (JavaServer Faces Widget Library)。

mashup 應(yīng)用程序中最常見(jiàn)的用例之一就是以 feed(RSS 或 Atom)的形式導(dǎo)出應(yīng)用程序的內(nèi)部數(shù)據(jù)。在 Mashups4JSF 出現(xiàn)之前,開(kāi)發(fā)人員需要從應(yīng)用程序 DTO(數(shù)據(jù)傳輸對(duì)象)中手動(dòng)生成 feed?,F(xiàn)在要感謝 Mashups4JSF,它使得以 feed 形式導(dǎo)出應(yīng)用程序數(shù)據(jù)變得更簡(jiǎn)單。

在本文中,我將解釋如何使用 Mashups4JSF feed 生成器服務(wù) (producer service) 以 RSS feed 的形式導(dǎo)出 Web 應(yīng)用程序數(shù)據(jù),以及如何通過(guò) feed 閱讀器組件使用這些數(shù)據(jù)。

瀏覽新聞應(yīng)用程序

新聞應(yīng)用程序是一個(gè) JavaServer Faces (JSF) 2.0 應(yīng)用程序,它在數(shù)據(jù)表中展示一個(gè)樣例新聞集,如?圖 1?所示,我們希望以 RSS feed 的方式導(dǎo)出這個(gè)樣例新聞集。


圖 1. 新聞樣例
?

新聞頁(yè)面的代碼非常簡(jiǎn)單。清單 1?展示了 news.xhtml 頁(yè)面中的新聞 dataTable 的 XHTML 代碼。


清單 1. news.xhtml 頁(yè)面中的新聞 dataTable?

<h:dataTable id="newsTable" value="#{newsList.news}" var="varnews"styleClass="standardTable" headerClass="standardTable_Header"footerClass="standardTable_Footer" rowClasses="standardTable_Row1, standardTable_Row2"columnClasses="standardTable_Column"><h:column id="titleColumn"><f:facet name="header"><h:outputText value="#{messages.application_label_title}" id="titleText"></h:outputText></f:facet><h:outputLink value="#{varnews.link}"><h:outputText id="title" value="#{varnews.title}"></h:outputText></h:outputLink></h:column><h:column id="authorColumn"><f:facet name="header"><h:outputText value="#{messages.application_label_author}" id="authorText"></h:outputText></f:facet><h:outputText id="author" value="#{varnews.author}"></h:outputText></h:column><h:column id="categoryColumn"><f:facet name="header"><h:outputText value="#{messages.application_label_category}" id="categoryText"></h:outputText></f:facet><h:outputText id="category" value="#{varnews.category}"></h:outputText></h:column><h:column id="descColumn"><f:facet name="header"><h:outputText value="#{messages.application_label_description}" id="descText"></h:outputText></f:facet><h:outputText id="desc" value="#{varnews.desc}"></h:outputText></h:column> </h:dataTable>

?

newsTable?通過(guò)表達(dá)式?#{newsList.news}?與?NewsList?DTO 綁定。清單 2?展示了?NewsList?DTO 的代碼。它包含新聞對(duì)象的靜態(tài)列表。它可以保存來(lái)自數(shù)據(jù)庫(kù)的真實(shí)數(shù)據(jù),但是為了簡(jiǎn)便起見(jiàn),這里使用了一個(gè)靜態(tài)列表。


清單 2. NewsList DTO

@ManagedBean public class NewsList {static List <News> news = new ArrayList<News>();// Sample news liststatic {for (int i = 0; i < 10; ++i) {news.add(new News("Title" + i, "Description" + i, "http://www.google.com/search?q=" + i, "Category" + i, "Author" + i));}}public List<News> getNews() {return news;} }

?

News?類(lèi)是一個(gè)非常簡(jiǎn)單的 bean。它僅包含以下屬性:

  • Title
  • Description
  • Link
  • Category
  • Author
  • 參見(jiàn)?清單 3。


    清單 3. News DTO

    public class News {private String title;private String desc;private String link;private String category;private String author;...public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}public String getLink() {return link;}public void setLink(String link) {this.link = link;}public String getCategory() {return category;}public void setCategory(String category) {this.category = category;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;} }

    ?

    現(xiàn)在,讓我們看看如何以 RSS feed 的形式導(dǎo)出?NewsList?數(shù)據(jù)。

    以 RSS feed 的形式導(dǎo)出應(yīng)用程序數(shù)據(jù)

    在詳細(xì)介紹以 RSS feed 的形式導(dǎo)出新聞列表之前,您可能需要了解如何為 JSP 2.0 應(yīng)用程序配置 Mashups4JSF 庫(kù),此前的一篇 Mashups4JSF 文章(參見(jiàn)?參考資料)介紹了這方面的內(nèi)容。在使用 Mashups4JSF feed servlet 時(shí),確保下載了 Mashups4JSF 0.0.3 的最新的穩(wěn)定快照(參見(jiàn)?參考資料)。

    要使用 Mashups4JSF 以 RSS feed 的形式導(dǎo)出?NewsList?數(shù)據(jù),我們需要在 JSF 應(yīng)用程序中執(zhí)行下列步驟。

    注冊(cè) Mashups4JSF feed servlet

    在您的應(yīng)用程序的 web.xml 中注冊(cè) Mashups4JSF 的?MashupFeedServlet,如?清單 4?所示。


    清單 4. 注冊(cè) Mashups4JSF feed servlet

    <servlet><servlet-name>mashupFeedServlet</servlet-name><servlet-class>com.googlecode.mashups.servlets.MashupFeedServlet</servlet-class> </servlet><servlet-mapping><servlet-name>mashupFeedServlet</servlet-name><url-pattern>/mashupFeedServlet</url-pattern> </servlet-mapping>

    ?

    注釋 feed 類(lèi)

    使用?@Feed?注釋 feed 類(lèi)(NewsList?類(lèi)),并分別使用?@FeedTitle、@FeedDescription、@FeedLink?和?@FeedItems?指定標(biāo)題、描述、鏈接和 feed 項(xiàng)。清單 5?顯示了應(yīng)用注釋后的?NewsList?類(lèi)。


    清單 5. 應(yīng)用注釋后的 NewsList 類(lèi)

    @ManagedBean @Feed public class NewsList {static List <News> news = new ArrayList<News>();// Sample news liststatic {for (int i = 0; i < 10; ++i) {news.add(new News("Title" + i, "Description" + i, "http://www.google.com/search?q=" + i, "Category" + i, "Author" + i));}}@FeedItemspublic List<News> getNews() {return news;}@FeedTitlepublic String getTitle() {return TITLE;}@FeedDescriptionpublic String getDescription() {return DESCRIPTION;}@FeedLinkpublic String getLink() {return LINK;}private final String TITLE = "News List";private final String DESCRIPTION = "News List Description";private final String LINK = "http://somenewschannel.com"; }

    ?

    使用?@ItemFeed?注釋 feed 項(xiàng)類(lèi)(News?類(lèi)),并分別使用?@ItemTitle、@ItemDescription、@ItemLink,?@ItemCategory?和@ItemAuthor?指定 feed 項(xiàng)的標(biāo)題、描述、鏈接、類(lèi)別和作者。?清單 6?顯示了應(yīng)用注釋后的?News?類(lèi)。


    清單 6. 應(yīng)用注釋后的 News 類(lèi)

    @FeedItem public class News {private String title;private String desc;private String link;private String category;private String author;...@ItemTitlepublic String getTitle() {return title;}public void setTitle(String title) {this.title = title;}@ItemDescriptionpublic String getDesc() {return desc;}public void setDesc(String desc) {this.desc = desc;}@ItemLinkpublic String getLink() {return link;}public void setLink(String link) {this.link = link;}@ItemCategorypublic String getCategory() {return category;}public void setCategory(String category) {this.category = category;}@ItemAuthorpublic String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;} }

    ?

    呈現(xiàn) feed

    對(duì) feed 和 feed 項(xiàng)類(lèi)進(jìn)行注釋后,基本上已經(jīng)完成了全部工作。接下來(lái)要做的就是呈現(xiàn) feed,實(shí)現(xiàn)方式是將 feed 解析為 feed servlet 的參數(shù),并指定?rss?作為輸出,如?清單 7?所示。


    清單 7. 通過(guò)將 feed 類(lèi)解析為 feed servlet 的參數(shù)呈現(xiàn) RSS feed?

    #{request.contextPath}/mashupFeedServlet?feedClass=dto.NewsList&output=rss

    ?

    圖 2 展示了以 RSS feed 的形式導(dǎo)出的?NewsList?feed。


    圖 2. NewsList RSS feed?
    ?

    如果希望以 ATOM feed 的形式導(dǎo)出 NewsList,那么需要將?atom?指定為 feed servlet 的輸出。

    通過(guò) feed 閱讀器使用 RSS feed

    除了 RSS 和 ATOM feed 導(dǎo)出外,Mashups4JSF 還允許在 JSF 應(yīng)用程序內(nèi)部使用任何 RSS、ATOM 或 JSON feed。因此,讓我們來(lái)看看如何通過(guò)?rssFeedReader?組件使用我們剛剛為?NewsList?數(shù)據(jù)創(chuàng)建的 RSS feed。

    清單 8?展示了如何在 consumer.xhtml 頁(yè)面中通過(guò)?rssFeedReader?組件使用 RSS feed。


    清單 8. consumer.xhtml 頁(yè)面中的 rssFeedReader 組件

    <mashup:rssFeedReader feedURL="http://#{facesContext.externalContext.request.remoteHost}:#{facesContext.externalContext.request.localPort} #{facesContext.externalContext.request.contextPath}/mashupFeedServlet?feedClass=dto.NewsList&output=rss"maximumCount="5"channelVar="channel"itemVar="item"itemIndex="itemIndex"><f:facet name="channel"><h4>#{messages.application_channel_desc}#{channel.description}</h4></f:facet><f:facet name="item"><b>#{messages.application_item_index} </b>#{itemIndex}<br /><b>#{messages.application_item_title} </b>#{item.title}<br /><b>#{messages.application_item_link} </b><h:outputLink value="#{item.link}">#{item.link}</h:outputLink><br /><b>#{messages.application_item_author} </b>#{item.author}<br /><b>#{messages.application_item_category} </b>#{item.categories[0].name}<br /><br /></f:facet> </mashup:rssFeedReader>

    ?

    如清單 8 所示,我們指定了以下內(nèi)容:

    • RSS feed URL,
    • 用于訪(fǎng)問(wèn) RSS 通道信息的 channel 變量(例如,description),
    • item 變量,將訪(fǎng)問(wèn)所有 RSS feed 項(xiàng)(如?title、link?和?author),以及
    • 項(xiàng)索引。

    在 channel 部分中,我們可以指定希望為 RSS 通道顯示的屬性,而在 item 部分中,我們可以指定希望為每個(gè) feed 項(xiàng)顯示的屬性。

    圖 3?展示了?NewsList?feed 的?rssFeedReader?輸出。


    圖 3. NewsList RSS feed 的 rssFeedReader 輸出
    ?

    結(jié)束語(yǔ)

    除了各種 mashup 組件和服務(wù)之外,Mashups4JSF 還抽象化了為 JSF 應(yīng)用程序?qū)С龊蛯?dǎo)入 mashup feed 的方式。在 Mashups4JSF 出現(xiàn)之前,開(kāi)發(fā)人員需要從應(yīng)用程序 DTO(數(shù)據(jù)傳輸對(duì)象)中手動(dòng)生成 feed。現(xiàn)在要感謝 Mashups4JSF,它使得以 feed 的形式導(dǎo)出應(yīng)用程序數(shù)據(jù)變得更簡(jiǎn)單。在本文中,我們學(xué)習(xí)了如何使用 Mashups4JSF Feed Servlet 以 RSS feed 的形式表示 JSF 應(yīng)用程序數(shù)據(jù)。我們還了解了如何通過(guò) rssFeedReader 組件使用這些 feed。

    ?

    參考資料

    學(xué)習(xí)

      • Mashups4JSF 簡(jiǎn)介:使 Mashups 更加簡(jiǎn)單(Hazem Saleh,developerWorks,2010 年 7 月):了解 Mashups4JSF 架構(gòu)和庫(kù)配置。在 WebSphere Application Server 7.0 上使用 Mashups4JSF 和 IBM JWL (JSF Widget Library) 創(chuàng)建具有少量代碼的 mashup 應(yīng)用程序。

      • Apache MyFaces Project 主頁(yè):了解有關(guān) Apache Software Foundation 這一項(xiàng)目的更多信息。

      • Mashups4JSF 主頁(yè):訪(fǎng)問(wèn) Mashups4JSF 庫(kù),它允許在 Java? 和 JSF 應(yīng)用程序中輕松地構(gòu)建 mashup。

      • Mashups 和 JavaServer? Faces Integration Library:觀看 Mashups4JSF 演示。

      • 感興趣的活動(dòng):了解即將到來(lái)的、面向 IBM 開(kāi)源開(kāi)發(fā)人員的會(huì)議、展覽和網(wǎng)絡(luò)廣播。?

      • 隨時(shí)關(guān)注 developerWorks?技術(shù)活動(dòng)和網(wǎng)絡(luò)廣播。?

      • 訪(fǎng)問(wèn) developerWorks?Open source 專(zhuān)區(qū)獲得豐富的 how-to 信息、工具和項(xiàng)目更新以及最受歡迎的文章和教程,幫助您用開(kāi)放源碼技術(shù)進(jìn)行開(kāi)發(fā),并將它們與 IBM 產(chǎn)品結(jié)合使用。

    轉(zhuǎn)載于:https://www.cnblogs.com/chenying99/archive/2013/01/17/2864704.html

    總結(jié)

    以上是生活随笔為你收集整理的使用 Mashups4JSF 生成和消费 Mashup Feed的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。