Theme:
Description & Source Code

This demo fetches the RSS subscription and binds the content to the ZUL page using ZK's data-binding feature.

<window  apply="org.zkoss.bind.BindComposer" 
	viewModel="@id('vm') @init('demo.app.rss_reader.RSSViewModel')" 
	width="100%" height="500px">
	<style src="/widgets/application/rss_reader/Style.css" />
	<borderlayout width="100%" height="100%">
		<west width="200px" collapsible="true" title="Subscription Title">
			<div>
				<image src="@load(vm.selectedFeed.feedImageLink)" />
				<listbox id="newsListBox" height="430px" model="@load(vm.selectedFeed.feedEntries)" width="100%"
					selectedItem="@bind(vm.selectedEntry)">
					<template name="model" var="feed">
						<listitem>
							<listcell label="@load(feed.title)" />
						</listitem>
					</template>
				</listbox>
			</div>
		</west>
		<center>
			<groupbox hflex="1" vflex="1" closable="false" mold="3d">
				<caption label="@load(vm.selectedEntry.title)">
					<a sclass="link" href="@load(vm.selectedEntry.link)" target="_zkdemo">Full Article</a>
				</caption>
				<html class="desc" content="@load(vm.selectedEntry.descValue)" />
			</groupbox>
		</center>
	</borderlayout>
</window>
package demo.app.rss_reader;

import org.zkoss.bind.annotation.Init;
import org.zkoss.zrss.RssBinder;
import org.zkoss.zrss.RssEntry;
import org.zkoss.zrss.RssFeed;

public class RSSViewModel {
	private RssFeed selected;
	private RssEntry selectEntry;

	@Init
	public void init() throws Exception {
		selected = new RssBinder().lookUpFeed("http://www.engadget.com/rss.xml");
		selectEntry = selected.getFeedEntries().get(0);
	}

	public RssFeed getSelectedFeed() {
		return selected;
	}

	public RssEntry getSelectedEntry() {
		return selectEntry;
	}

	public void setSelectedEntry(RssEntry selectedEntry) {
		this.selectEntry = selectedEntry;
	}
}