Wicket 教程4:如何使用 Include,Panel,Fragment,Link
前面我沒看到了如何使用一些基本的markup,和幾個(gè)示例
( http://www.hexiao.cn/blog/index.php?job=art&articleid=a_20060807_153301? ), 這次再來看看幾個(gè)復(fù)雜一點(diǎn)的markup.
下次來看看 Form 及其相關(guān)的markup的使用.
[b]Include [/b]是一個(gè)和JSP中的include指令功能差不多的markup,用來導(dǎo)入一個(gè)文件.
可以使用絕對和相對路徑來導(dǎo)入文件, 該類的使用是很簡單的.
Java code:
?...
??add(new Include("header", "header.html"));
??add(new Include("footer", "footer.html"));
?? ?...
and Html Code:
?? ...
??<div>
?? <div wicket:id="header">header comes here</div>
?? <div>I am the body!</div>
?? <div wicket:id="footer">footer comes here</div>
??</div>
?? ...
?
上面就可以實(shí)現(xiàn)一個(gè)簡單的布局框架.
[b]Panel: [/b]panel有點(diǎn)類似于swing中的panel,用來放置其他markup, panel的使用也
是很簡單的, 如下:
創(chuàng)建一個(gè)mypanel類:
class MyPanel extends Panel {
?
?public MyPanel(String id) {
??super(id);
??add(new Label("label", "yep, this is from a component
proper"));
??add(new AnotherPanel("otherPanel"));
?}
}
該類繼承與Panel,里面添加了兩個(gè)markup,一個(gè)Label,另外一個(gè)Panel(Panel可以
無限嵌套). 然后編寫對應(yīng)的html文件. MyPanel.html
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="<head>
??? <title>Wicket Examples - sample panel</title>
</head>
<body>
?<wicket:panel>
??<p style="border: 2px dotted #fc0; padding: 5px;">
?? Here are some panel contents for ya.<br />
?? Put arbitrairy Wicket components in your Panels,
?? like this label: <span wicket:id="label" style="background-
color: aqua" >to be replaced</span>, or<br />
?? even another panel: <span wicket:id="otherPanel"?
style="background-color: aqua">also to be replaced</span>.<br />
?? You can nest panels any deep you want.
??</p>
?</wicket:panel>
</body>
</html>
下面是使用上面的panel的代碼,
Java code:
...
?add(new MyPanel("panel"));
...
Html code:
??? <span wicket:id="panel">panel contents come here</span>
[b]Fragment:[/b] 當(dāng)有很多小段信息要組織的時(shí)候,使用很多panel可能是不雅觀的,這時(shí)
就可以使用Fragment了.
示例如下:
Java code:
...
??? add(new Fragment("myPanel1", "frag2"));
...
Html code:
...
<span wicket:id="myPanel">Example input (will be removed)</span>
???????????
???????????? <wicket:fragment wicket:id="frag1">panel
1</wicket:fragment>
???????????? <wicket:fragment wicket:id="frag2">panel
2</wicket:fragment>
...
[b]Link:[/b] link就是web頁面中的連接了, 這里的link可以是一切連接,如 常用的<a/>
, button... 這里的link 和JSF中的link所擁有的功能一樣強(qiáng)大.
下面來看幾個(gè)示例:
普通的link:
Java code:
...
?add(new Link("link1"));
...
Html code:
...
<a href="#" wicket:id="link1">this link is clicked <span
wicket:id="linkLabel1">n</span> times</a>
...
使用不同的html 可以顯示為不同的樣式,如:
button樣式的按鈕:
Html code:
<button wicket:id="link2">this button is clicked <span
wicket:id="linkLabel2">n</span> times</button>
or:
<input type="button" wicket:id="link3" value="this button is clicked n
times" />
[b]ExternalLink:[/b] 是link的一種, 特別用來連接到該站點(diǎn)以外的資源, 示例:
Java code:
...
//?? add a link that goes to javalobby
add(new ExternalLink("externalLink1", "
JavaLobby"));
...
Html code:
...
?<a href="#" target="_new" wicket:id="externalLink1">this body
will be replaced</a>
...
[b]PageLink:[/b] 也是link的一種,實(shí)現(xiàn)頁面之間的跳轉(zhuǎn): 示例:
Java code:
...
?// 可以有多種方法使用該類,下面是一種推薦的方法
??add(new PageLink("pageLink", new IPageLink(){
???public Page getPage(){
????return new NonBookmarkablePage
(QuickStart4.this);
???}
???public Class getPageIdentity(){
????return NonBookmarkablePage.class;
???}
??}));
?...
Html code:
...
?<a wicket:id="pageLink">go to our private/ non bookmarkable
page</a>
....
[b]BookmarkablePageLink:[/b] 也是link的一種,實(shí)現(xiàn)一種可以作為書簽收藏的連接,也
就是無狀態(tài)的連接. 可以帶參數(shù)也可以不帶參數(shù): 示例:
Java? code :
...
??add(new BookmarkablePageLink("pageLinkNoArgs",
BookmarkablePage.class));
??PageParameters parameters = new PageParameters();
??parameters.put("message", "This message was passed as a
page parameter argument");
??add(new BookmarkablePageLink("pageLinkWithArgs",
BookmarkablePage.class, parameters));
....
Html code:
...
<p>
?<a wicket:id="pageLinkNoArgs">go to our bookmarkable page
without passing any arguments</a>
?</p>
?<p>
?<a wicket:id="pageLinkWithArgs">go to our bookmarkable page
passing a message argument</a>
?</p>
...
討論: http://bbs.hexiao.cn/thread.php?fid=9
代碼下載: http://bbs.hexiao.cn/read.php?fid=9&tid=15&fpage=1?
允許所需要的類庫,到這里下載: http://bbs.hexiao.cn/read.php?fid=9&tid=12&fpage=1