﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-刘文涛-随笔分类-buffalo</title><link>http://www.blogjava.net/liuwentao253/category/17044.html</link><description>I am a coder</description><language>zh-cn</language><lastBuildDate>Wed, 28 Feb 2007 03:42:37 GMT</lastBuildDate><pubDate>Wed, 28 Feb 2007 03:42:37 GMT</pubDate><ttl>60</ttl><item><title>buffalo  调方法时 参数的类型</title><link>http://www.blogjava.net/liuwentao253/archive/2006/11/13/80920.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Mon, 13 Nov 2006 08:27:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/11/13/80920.html</guid><description><![CDATA[
		<p>一 ：客户端 js 的数组  来 映射 服务器端的 Map 对象 ：<br /><br />首先我们服务器端 有一个java方法 ：<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img id="Codehighlighter1_4_76_Open_Image" onclick="this.style.display='none'; Codehighlighter1_4_76_Open_Text.style.display='none'; Codehighlighter1_4_76_Closed_Image.style.display='inline'; Codehighlighter1_4_76_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_4_76_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_4_76_Closed_Text.style.display='none'; Codehighlighter1_4_76_Open_Image.style.display='inline'; Codehighlighter1_4_76_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #000000">    </span>
				<span id="Codehighlighter1_4_76_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span>
				<span id="Codehighlighter1_4_76_Open_Text">
						<span style="COLOR: #008000">/**</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * 输入一个map ,原封不动的输出来<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
						<span style="COLOR: #808080">@param</span>
						<span style="COLOR: #008000"> arg<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />     * </span>
						<span style="COLOR: #808080">@return</span>
						<span style="COLOR: #008000"> Map<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />     </span>
						<span style="COLOR: #008000">*/</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img id="Codehighlighter1_109_159_Open_Image" onclick="this.style.display='none'; Codehighlighter1_109_159_Open_Text.style.display='none'; Codehighlighter1_109_159_Closed_Image.style.display='inline'; Codehighlighter1_109_159_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_109_159_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_109_159_Closed_Text.style.display='none'; Codehighlighter1_109_159_Open_Image.style.display='inline'; Codehighlighter1_109_159_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    </span>
				<span style="COLOR: #0000ff">public</span>
				<span style="COLOR: #000000"> Map object(Map arg) </span>
				<span id="Codehighlighter1_109_159_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_109_159_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />              </span>
						<span style="COLOR: #0000ff">return</span>
						<span style="COLOR: #000000"> arg;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span>
				</span>
		</div>
		<p>
				<br />在客户端我们有 这样的 js 代码 ：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">script language</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">javascript</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />var buffalo </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Buffalo(endPoint)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_90_498_Open_Image" onclick="this.style.display='none'; Codehighlighter1_90_498_Open_Text.style.display='none'; Codehighlighter1_90_498_Closed_Image.style.display='inline'; Codehighlighter1_90_498_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_90_498_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_90_498_Closed_Text.style.display='none'; Codehighlighter1_90_498_Open_Image.style.display='inline'; Codehighlighter1_90_498_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />function sendObject() </span>
				<span id="Codehighlighter1_90_498_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_90_498_Open_Text">
						<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_101_102_Open_Image" onclick="this.style.display='none'; Codehighlighter1_101_102_Open_Text.style.display='none'; Codehighlighter1_101_102_Closed_Image.style.display='inline'; Codehighlighter1_101_102_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_101_102_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_101_102_Closed_Text.style.display='none'; Codehighlighter1_101_102_Open_Image.style.display='inline'; Codehighlighter1_101_102_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    var a </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_101_102_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_101_102_Open_Text">
								<span style="COLOR: #000000">{}</span>
						</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    a[Buffalo.BOCLASS] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">java.util.Map</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    a[</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">a</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">A</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    a[</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">b</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">true</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    a[</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">c</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">123.4</span>
						<span style="COLOR: #000000">;<br /><img id="Codehighlighter1_201_202_Open_Image" onclick="this.style.display='none'; Codehighlighter1_201_202_Open_Text.style.display='none'; Codehighlighter1_201_202_Closed_Image.style.display='inline'; Codehighlighter1_201_202_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_201_202_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_201_202_Closed_Text.style.display='none'; Codehighlighter1_201_202_Open_Image.style.display='inline'; Codehighlighter1_201_202_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    var u </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_201_202_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_201_202_Open_Text">
								<span style="COLOR: #000000">{}</span>
						</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    u[Buffalo.BOCLASS] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">net.buffalo.demo.simple.User</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    u.id </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">234</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    u.name </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&lt;xml here&gt;&amp;</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    u.age </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">17</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    u.sex </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">false</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    u.memo </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">very beautiful</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    a[</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">u</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">] </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> u;<br /><img id="Codehighlighter1_431_494_Open_Image" onclick="this.style.display='none'; Codehighlighter1_431_494_Open_Text.style.display='none'; Codehighlighter1_431_494_Closed_Image.style.display='inline'; Codehighlighter1_431_494_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_431_494_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_431_494_Closed_Text.style.display='none'; Codehighlighter1_431_494_Open_Image.style.display='inline'; Codehighlighter1_431_494_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    buffalo.remoteCall(</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">simpleService.object</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">,[a], function(reply) </span>
						<span id="Codehighlighter1_431_494_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_431_494_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        alert(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">return user memo:</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">+</span>
								<span style="COLOR: #000000"> reply.getResult()[</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">u</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">].memo);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">script</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<br />注意 这 2  句 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">a[Buffalo.BOCLASS] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">java.util.Map</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;</span></div><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">u[Buffalo.BOCLASS] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">net.buffalo.demo.simple.User</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;</span></div><br /><br />二 ：<font color="#006400" size="4">将表单序列化为一个dto对象<br /><br /></font>首先我们在服务器端有一个<font color="#000000" size="4">dto对象</font> ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_18_149_Open_Image" onclick="this.style.display='none'; Codehighlighter1_18_149_Open_Text.style.display='none'; Codehighlighter1_18_149_Closed_Image.style.display='inline'; Codehighlighter1_18_149_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_18_149_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_18_149_Closed_Text.style.display='none'; Codehighlighter1_18_149_Open_Image.style.display='inline'; Codehighlighter1_18_149_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> User </span><span id="Codehighlighter1_18_149_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_18_149_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> id;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String name;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> age;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">boolean</span><span style="COLOR: #000000"> sex;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> String memo;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    <br /><img id="Codehighlighter1_138_141_Open_Image" onclick="this.style.display='none'; Codehighlighter1_138_141_Open_Text.style.display='none'; Codehighlighter1_138_141_Closed_Image.style.display='inline'; Codehighlighter1_138_141_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_138_141_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_138_141_Closed_Text.style.display='none'; Codehighlighter1_138_141_Open_Image.style.display='inline'; Codehighlighter1_138_141_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> User() </span><span id="Codehighlighter1_138_141_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_138_141_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />接下来我们在客户端有下列代码 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />var buffalo </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Buffalo(endPoint);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_96_355_Open_Image" onclick="this.style.display='none'; Codehighlighter1_96_355_Open_Text.style.display='none'; Codehighlighter1_96_355_Closed_Image.style.display='inline'; Codehighlighter1_96_355_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_96_355_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_96_355_Closed_Text.style.display='none'; Codehighlighter1_96_355_Open_Image.style.display='inline'; Codehighlighter1_96_355_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />function doAnotherSubmit() </span><span id="Codehighlighter1_96_355_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_96_355_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    var userObj </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Buffalo.Form.formToBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">form1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">net.buffalo.demo.form.User</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img id="Codehighlighter1_249_352_Open_Image" onclick="this.style.display='none'; Codehighlighter1_249_352_Open_Text.style.display='none'; Codehighlighter1_249_352_Closed_Image.style.display='inline'; Codehighlighter1_249_352_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_249_352_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_249_352_Closed_Text.style.display='none'; Codehighlighter1_249_352_Open_Image.style.display='inline'; Codehighlighter1_249_352_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    buffalo.remoteCall(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">userService.createUser</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, [userObj], function(reply)</span><span id="Codehighlighter1_249_352_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_249_352_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        $(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">form_infomsg</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">).innerHTML</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Form has been submited, username is: </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> reply.getResult().username;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000">)<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div><br />注意这2句 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">var userObj </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> Buffalo.Form.formToBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">form1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">net.buffalo.demo.form.User</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);</span></div><br />form1表单中 有 User类 中属性  同名 的 表单项 ， 这样 userObj 就可以作为在客户端 映射 User  的参数了。<br /><br />另外 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">$(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">form_infomsg</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)</span></div><br />可以指页面中 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">div id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">form_infomsg</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> style</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">color:blue</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">div</span><span style="COLOR: #000000">&gt;</span></div><p><br />表示的位置。<br /><br /><br />三 ：数据绑定<br /><br />  首先 我们在服务器端有 这样一个变量 ：<br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_35_894_Open_Image" onclick="this.style.display='none'; Codehighlighter1_35_894_Open_Text.style.display='none'; Codehighlighter1_35_894_Closed_Image.style.display='inline'; Codehighlighter1_35_894_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_35_894_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_894_Closed_Text.style.display='none'; Codehighlighter1_35_894_Open_Image.style.display='inline'; Codehighlighter1_35_894_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000"> List employees() </span><span id="Codehighlighter1_35_894_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_35_894_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (employees.size() </span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">) </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> employees;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Greg</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Murray</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Greg</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Murphy</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">George</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Murphy</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">George</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Murray</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Peter</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Jones</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Amber</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Jones</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Amy</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Jones</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Bee</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Jones</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Beth</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Johnson</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cindy</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Johnson</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cindy</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Murphy</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        employees.add(</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> EmployeeBean(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Duke</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Hazerd</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">));<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> employees;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span></div><p>在客户端我们有 这样的代码 ：</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">var buffalo </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Buffalo(endPoint);<br /><img id="Codehighlighter1_61_138_Open_Image" onclick="this.style.display='none'; Codehighlighter1_61_138_Open_Text.style.display='none'; Codehighlighter1_61_138_Closed_Image.style.display='inline'; Codehighlighter1_61_138_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_61_138_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_61_138_Closed_Text.style.display='none'; Codehighlighter1_61_138_Open_Image.style.display='inline'; Codehighlighter1_61_138_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />function doCompletion() </span><span id="Codehighlighter1_61_138_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_61_138_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    buffalo.bindReply(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ajaxService.filterEmployees</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,[target.value], </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">names</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><p>同时我们在页面中有 ：</p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">TABLE id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">names</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> border</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> jheight</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span></div><p>结果 ：<br /><br /><img src="http://liuwentao253.tiandi.com/file/1455/album/1455/1163408307748.jpg" /><br /></p><p><br />还有一种形式是 ：<br /></p><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_68_163_Open_Image" onclick="this.style.display='none'; Codehighlighter1_68_163_Open_Text.style.display='none'; Codehighlighter1_68_163_Closed_Image.style.display='inline'; Codehighlighter1_68_163_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_68_163_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_68_163_Closed_Text.style.display='none'; Codehighlighter1_68_163_Open_Image.style.display='inline'; Codehighlighter1_68_163_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">    buffalo.remoteCall(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">simpleService.allLocales</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, [], function(reply) </span><span id="Codehighlighter1_68_163_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_68_163_Open_Text"><span style="COLOR: #000000">{<br /><img id="Codehighlighter1_72_116_Open_Image" onclick="this.style.display='none'; Codehighlighter1_72_116_Open_Text.style.display='none'; Codehighlighter1_72_116_Closed_Image.style.display='inline'; Codehighlighter1_72_116_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_72_116_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_72_116_Closed_Text.style.display='none'; Codehighlighter1_72_116_Open_Image.style.display='inline'; Codehighlighter1_72_116_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />        </span><span id="Codehighlighter1_72_116_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/** */</span><span id="Codehighlighter1_72_116_Open_Text"><span style="COLOR: #008000">/**</span><span style="COLOR: #008000">Buffalo.bind("area", reply.getSource());</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        Buffalo.bind(tableId, reply.getResult());<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span></span><span style="COLOR: #000000">)</span></div><br />注意这句 <br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">Buffalo.bind(tableId, reply.getResult());</span></div><img src ="http://www.blogjava.net/liuwentao253/aggbug/80920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-11-13 16:27 <a href="http://www.blogjava.net/liuwentao253/archive/2006/11/13/80920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>bufalo 1.2 Demo 页 笔记</title><link>http://www.blogjava.net/liuwentao253/archive/2006/11/13/80900.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Mon, 13 Nov 2006 07:27:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/11/13/80900.html</guid><description><![CDATA[
		<img src="http://liuwentao253.tiandi.com/file/1455/album/1455/1163401969217.jpg" />
		<br />
		<br />
		<br />首先导入 buffalo需要的 3个 js文件 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> src</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">script/prototype.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> src</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">script/buffalo.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> src</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">script/template.js</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div><br /><br />在本页写的一段js代码 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script language</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JavaScript</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        var endPoint </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;%=request.getContextPath()%&gt;/bfapp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        var pageBuffalo </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> Buffalo(endPoint);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img id="Codehighlighter1_181_274_Open_Image" onclick="this.style.display='none'; Codehighlighter1_181_274_Open_Text.style.display='none'; Codehighlighter1_181_274_Closed_Image.style.display='inline'; Codehighlighter1_181_274_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_181_274_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_181_274_Closed_Text.style.display='none'; Codehighlighter1_181_274_Open_Image.style.display='inline'; Codehighlighter1_181_274_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />    function switchPage(page) </span><span id="Codehighlighter1_181_274_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_181_274_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />                pageBuffalo.switchView(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;%=request.getContextPath()%&gt;/pages/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> page);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />        }</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span></div><br /><br />这样如果我们想让<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">div id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">body</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        <img src="http://www.blogjava.net/images/dot.gif" />..<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">div</span><span style="COLOR: #000000">&gt;</span></div><br />显示我们需要的界面 ，我们就可以 用下面的方式 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">body onload</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">switchPage('home.html')</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span></div><br />或 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">a href</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript:switchPage('home.html')</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">Home</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&gt;</span></div><br />的方式来实现。<br /><br /><br />另外说一下 ：css <br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">div id</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">menu</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">ul</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">li</span><span style="COLOR: #000000">&gt;&lt;</span><span style="COLOR: #000000">a href</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript:switchPage('home.html')</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">Home</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">li</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">li</span><span style="COLOR: #000000">&gt;&lt;</span><span style="COLOR: #000000">a href</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">javascript:switchPage('help.html')</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">Get help</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">li</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">li</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">version: </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">document.write(Buffalo.VERSION);</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">script</span><span style="COLOR: #000000">&gt;&lt;/</span><span style="COLOR: #000000">li</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">ul</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">div</span><span style="COLOR: #000000">&gt;</span></div><br />因为 css中 有 ：<br /><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_9_105_Open_Image" onclick="this.style.display='none'; Codehighlighter1_9_105_Open_Text.style.display='none'; Codehighlighter1_9_105_Closed_Image.style.display='inline'; Codehighlighter1_9_105_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_9_105_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_9_105_Closed_Text.style.display='none'; Codehighlighter1_9_105_Open_Image.style.display='inline'; Codehighlighter1_9_105_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span style="COLOR: #000000">#menu li </span><span id="Codehighlighter1_9_105_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_9_105_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    </span><span style="COLOR: #0000ff"><strong>float</strong></span><span style="COLOR: #000000"><strong>: left;<br /></strong><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    display: block;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    margin: 0px;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    padding: 0px;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    width:120px;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    text</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">align: center<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div><br />float: left; 所以 菜单是横着排开的。<img src ="http://www.blogjava.net/liuwentao253/aggbug/80900.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-11-13 15:27 <a href="http://www.blogjava.net/liuwentao253/archive/2006/11/13/80900.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>bufflo最佳实践</title><link>http://www.blogjava.net/liuwentao253/archive/2006/11/10/80374.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Fri, 10 Nov 2006 05:30:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/11/10/80374.html</guid><description><![CDATA[这里我们提供一些来自于真实项目的最佳实践。 这些实践提出了采用ajax的<b>正确</b>道路。请在你的项目中考虑它们。 
<h3><a name="%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5-%26nbsp%3B%26nbsp%3B%26nbsp%3B%E7%94%A8DTO%E7%9B%B4%E6%8E%A5%E4%BB%A3%E6%9B%BFdomain%E5%AF%B9%E8%B1%A1"></a>    用DTO <font color="#006400" size="2">[(data transfer object) 数据传递对象]</font>直接代替domain对象</h3><p>    大多数ORM工具带给我们便利，尤其在处理对象关系上。在一个传统的java项目中，我们可以定义一个可用在多个层之间相容的domain对象。<u>这即使在一个集群的应用中也是优良的，因为它们在同一个JVM中而且对象的内部状态能被保存</u>。但在buffalo应用中，因为buffalo是<b>真正地</b>远程调用，所以你最好不这样做。你应该思量一下带宽的问题。</p><p>    让我们示例说明：userService.listUser，这个方法将返回一个user列表，同时User对象有AddressInfo、Roles和User属于的Department。在传统的JSP编写方式下，这是很好的。但在buffalo,这是很糟糕的。如果你不处理这个状况下任何部分，buffalo将尝试序列化user对象所连接的"每一个"属性，甚至是一对多、多对多的引用数据。这就像我们不需要显示太多数据一样，是对时间和带宽的巨大浪费。</p><p>    所以在设计buffalo服务时，请用DTO（或是 ViewHelper）来减少对用户的页面输出。</p><h3><a name="%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5-%26nbsp%3B%26nbsp%3B%26nbsp%3B%E6%85%8E%E9%87%8D%E5%AE%9A%E4%B9%89%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E6%8E%A5%E5%8F%A3"></a>    慎重定义远程服务接口</h3><p>    请针对远程调用设计真正的远程服务方法。如果一个客户端开始了一次远程调用，那么服务应该一次性回应足够的信息。客户端不需要调用其它的方法。</p><h3><a name="%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5-%26nbsp%3B%26nbsp%3B%26nbsp%3B%E9%87%87%E7%94%A8%E6%B5%8F%E8%A7%88%E5%99%A8%E5%89%8D%E8%BF%9B%2F%E5%90%8E%E9%80%80%E7%89%B9%E5%BE%81"></a>    采用浏览器前进/后退特征</h3><p>    在一个web应用不能使用浏览器的前进/后退按钮来导航页面视图时，包括我在内的许多未端用户都会感到困惑。在这方面做得好的例如google，而做得糟糕是...MSN Live Mail。从1.2版开始，buffalo引入了这个特征。请考虑采用这个特征来提高用户体验吧。</p><h3><a name="%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5-%26nbsp%3B%26nbsp%3B%26nbsp%3B%E8%AE%BE%E8%AE%A1%E6%9B%B4%E5%A4%9A%E4%B8%8E%E7%94%A8%E6%88%B7%E6%8E%A5%E5%8F%A3%E7%9A%84%E4%BA%A4%E4%BA%92"></a>    设计更多与用户接口的交互</h3><p>    这是对所有ajax产品的普遍要求。当用户点击按钮或链接时，你应该提供一个有意义的提示使用户注意正在发生什么。在传统的web开发中，那些action会引起页面刷新或是页面切换。而在ajax中，你应该提供更多。</p><h3><a name="%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5-%26nbsp%3B%26nbsp%3B%26nbsp%3B%E5%9C%A8%E4%B8%AD%E5%B0%8F%E8%A7%84%E6%A8%A1%E5%BA%94%E7%94%A8%E4%B8%AD%EF%BC%8C%E9%87%87%E7%94%A8OPOA"></a>    在中小规模应用中，采用<span class="nobr"><a title="Visit page outside Confluence" href="http://michael.nona.name/archives/117" rel="nofollow">OPOA<sup><img class="rendericon" height="7" alt="" src="http://confluence.redsaga.com/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span></h3><p>    OPOA（OnePageOneApplication的简称）定义了一个web应用的类型。小型的基于应用的操作总是页面很少，而需要更佳的交互，例如邮件应用、系统监控等。对于这些应用来讲，你能使用OPOA简化开发和提供更丰富的用户体验。</p><h3><a name="%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5-%26nbsp%3B%26nbsp%3B%26nbsp%3B%E5%AF%B9%E4%BA%8E%E4%B8%AD%E5%A4%A7%E5%9E%8B%E5%BA%94%E7%94%A8%EF%BC%8C%E6%85%8E%E7%94%A8OPOA"></a>    对于中大型应用，慎用OPOA</h3><p>    由于浏览器能力所限，采用OPOA的大型应用（具有上百个视图） 在运行一会儿后会出现CPU或者内存的高消耗。对于这种情况，如果你仍然坚持使用OPOA的话，那么需要把整个系统分解为模块。这样当用户切换模块时，系统将重新定位到一个新页面以使浏览器有机会清理内存并休息一下。<br /><br />---------------------------------------------------------------------------------------------------<br />补充 ：<br /></p><h3><a name="%E5%8D%8F%E8%AE%AE-ref"></a>ref</h3><p>   &lt;ref&gt;表示对另一个对象的引用。这个标记对于处理循环引用的场合非常有用，而其它场合会抛出StackOverflowException异常。来让我们看一下示例：</p><div class="code"><div class="codeContent"><pre class="code-java"><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_0_12_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_12_Open_Text.style.display='none'; Codehighlighter1_0_12_Closed_Image.style.display='inline'; Codehighlighter1_0_12_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_12_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_12_Closed_Text.style.display='none'; Codehighlighter1_0_12_Open_Image.style.display='inline'; Codehighlighter1_0_12_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_12_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_12_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">People类定义</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img id="Codehighlighter1_26_85_Open_Image" onclick="this.style.display='none'; Codehighlighter1_26_85_Open_Text.style.display='none'; Codehighlighter1_26_85_Closed_Image.style.display='inline'; Codehighlighter1_26_85_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_26_85_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_26_85_Closed_Text.style.display='none'; Codehighlighter1_26_85_Open_Image.style.display='inline'; Codehighlighter1_26_85_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> People</span><span id="Codehighlighter1_26_85_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.blogjava.net/images/dot.gif" /></span><span id="Codehighlighter1_26_85_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  <img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  People getFriend() <img src="http://www.blogjava.net/images/dot.gif" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />  </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Other fields ommited</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /></span><span style="COLOR: #000000">}</span></span></div><br /><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img id="Codehighlighter1_0_15_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_15_Open_Text.style.display='none'; Codehighlighter1_0_15_Closed_Image.style.display='inline'; Codehighlighter1_0_15_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_0_15_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_15_Closed_Text.style.display='none'; Codehighlighter1_0_15_Open_Image.style.display='inline'; Codehighlighter1_0_15_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /><span id="Codehighlighter1_0_15_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id="Codehighlighter1_0_15_Open_Text"><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">People类对象的使用</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />People john </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> People(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">John</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />People michael </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> People(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Michael</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这里演示了循环引用</span><span style="COLOR: #008000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">john.setFriend(michael);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />michael.setFriend(josh);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />List friends </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ArrayList();<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />friends.add(john);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />friends.add(smith);</span></div><br /><br />friends被序列化为下面的xml片断：</pre></div></div><div class="code"><div class="codeContent"><div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">list</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">java.util.ArrayList</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">length</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">length</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">map</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">domain.People</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">friend</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">map</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">domain.People</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">type</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">friend</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">friend</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      </span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">ref</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">ref</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">map</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />  </span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">map</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span><span style="COLOR: #000000">&lt;/</span><span style="COLOR: #000000">list</span><span style="COLOR: #000000">&gt;</span></div>   其中ref=1表示对对象#1的引用作为它的值。xml片断中的每个&lt;list&gt;、&lt;map&gt;将被看作对象并具有一个引用id。</div></div><!--
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<rdf:Description
    rdf:about="http://confluence.redsaga.com/pages/viewpage.action?pageId=1554"
    dc:identifier="http://confluence.redsaga.com/pages/viewpage.action?pageId=1554"
    dc:title="最佳实践"
    trackback:ping="http://confluence.redsaga.com/rpc/trackback/1554"/>
</rdf:RDF>
--><!--
    Root decorator: all decisions about how a page is to be decorated via the
                    inline decoration begins here.
--><!--
    Switch based upon the context. However, for now, just delegate to a decorator
    identified directly by the context.
--><img src ="http://www.blogjava.net/liuwentao253/aggbug/80374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-11-10 13:30 <a href="http://www.blogjava.net/liuwentao253/archive/2006/11/10/80374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>buffalo 特征列表</title><link>http://www.blogjava.net/liuwentao253/archive/2006/11/09/80158.html</link><dc:creator>刘文涛</dc:creator><author>刘文涛</author><pubDate>Thu, 09 Nov 2006 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/liuwentao253/archive/2006/11/09/80158.html</guid><description><![CDATA[
		<p>在Buffalo2.0之前，Buffalo使用<span class="nobr"><a title="Visit page outside Confluence" href="http://java-source.net/open-source/web-services-tools/caucho-burlap" rel="nofollow">caucho<sup><img class="rendericon" height="7" alt="" src="http://confluence.redsaga.com/images/icons/linkext7.gif" width="7" align="absMiddle" border="0" /></sup></a></span>的burlap协议。从2.0开始，Buffalo有了一个全新的协议定义和适合web的、更快速的实现。Buffalo采用这个<font color="#006400"><u>基于xml的轻量级协议</u></font>来序列化java对象。而<u>javascript客户端把xml反序列化为javascript对象</u>。当进行一次远程调用时，Buffalo客户端会把这个远程调用序列化为xml，然后java端（服务器端）进行反序列化。<br /><br /><br />ajax正开始大行其道，Sun的Blueprints中已经开始包括ajax的支持。但是直接使用XMLHTTP在大多数情况下编程并不容易。Buffalo使得这一过程更加容易。Buffalo首先是<font color="#0000ff"><strong>burlap协议的JavaScript实现</strong></font>，但是他为<font color="#0000ff"><strong>Amowa</strong></font>(<font size="2">面向异步消息的Web应用</font>)/Ajax提供了更多的支持。开发者可以使用Buffalo为web应用更加容易的添加Amowa/Ajax特性；另外，随着开发者的要求，Buffalo开始逐渐加入了Web元素，使得Buffalo逐渐向一个全功能的、新型的Web框架逐渐靠近。 </p>
		<p>
				<font size="5">
						<font color="#ff0000">Burlap协议的JavaScript实现</font>
						<br />
				</font>
				<br />事实上，burlap协议应该是目前最适合使用用作web remoting的通信协议，全面，简洁，适用。<u><font color="#0000ff">Buffalo实现了burlap协议中绝大部分数据类型的javascript序列化/反序列化。</font></u></p>
		<p>
				<font color="#006400" size="4">Java对象到JavaScript对象的双向序列化全面支持<br /><br /></font>java端任意一个方法调用产生的结果，都可以被透明的序列化到javascript端，无论是这个对象多么复杂；无论是简单的原子类型（String, int, long, boolean）还是复杂的对象（List, Map），甚至你自己定义的业务对象，buffalo可以完整的将其序列化到javascript端，你可以用javascript与其交互。buffalo的这项特性久经考验，成为它最富特色的功能。例如，userService.listAll()返回所有用户列表(java.util.List):<br /></p>
		<p>
				<font color="#006400" size="4">
						<img src="http://www.amowa.net/buffalo/images/Class_Diagram__username.png" />
						<br />
						<br />
						<br />客户端调用方式：</font>
		</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img id="Codehighlighter1_59_203_Open_Image" onclick="this.style.display='none'; Codehighlighter1_59_203_Open_Text.style.display='none'; Codehighlighter1_59_203_Closed_Image.style.display='inline'; Codehighlighter1_59_203_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
				<img id="Codehighlighter1_59_203_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_59_203_Closed_Text.style.display='none'; Codehighlighter1_59_203_Open_Image.style.display='inline'; Codehighlighter1_59_203_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				<span style="COLOR: #000000">buffalo.remoteCall(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">userService.listAll</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,[],function(reply)</span>
				<span id="Codehighlighter1_59_203_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_59_203_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        </span>
						<span style="COLOR: #008000">//</span>
						<span style="COLOR: #008000"> 不用担心，reply.getResult会从聪明的判断服务器端远程调用的结果类型。</span>
						<span style="COLOR: #008000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />
						</span>
						<span style="COLOR: #000000">        var userList </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> reply.getResult(); <br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        var firstUserFamilyName </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> userList[</span>
						<span style="COLOR: #000000">0</span>
						<span style="COLOR: #000000">].name.familyName;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />    }</span>
				</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />);</span>
		</div>
		<p>
				<br />
				<font color="#006400" size="4">异步回调的编程模型 <br /><br /></font>在buffalo 1.1之前，每一个方法调用都是异步的，在1.1版本之后，Buffalo支持同步调用（尽管不推荐这么做）。两者编程模型完全相同，你可能这样使用系统的登录功能：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> var buffalo = new Buffalo("/bfapp/buffalo"); </span>
				<span style="COLOR: #008000">//</span>
				<span style="COLOR: #008000"> 1.2版本的写法</span>
				<span style="COLOR: #008000">
						<br />
						<img id="Codehighlighter1_140_309_Open_Image" onclick="this.style.display='none'; Codehighlighter1_140_309_Open_Text.style.display='none'; Codehighlighter1_140_309_Closed_Image.style.display='inline'; Codehighlighter1_140_309_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" />
						<img id="Codehighlighter1_140_309_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_140_309_Closed_Text.style.display='none'; Codehighlighter1_140_309_Open_Image.style.display='inline'; Codehighlighter1_140_309_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />
				</span>
				<span style="COLOR: #000000">buffalo.remoteCall(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">userService.login</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,[</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">username</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">,</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">password</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">], function(reply) </span>
				<span id="Codehighlighter1_140_309_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_140_309_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    var success </span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000"> reply.getResult();<br /><img id="Codehighlighter1_196_243_Open_Image" onclick="this.style.display='none'; Codehighlighter1_196_243_Open_Text.style.display='none'; Codehighlighter1_196_243_Closed_Image.style.display='inline'; Codehighlighter1_196_243_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_196_243_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_196_243_Closed_Text.style.display='none'; Codehighlighter1_196_243_Open_Image.style.display='inline'; Codehighlighter1_196_243_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000"> (success) </span>
						<span id="Codehighlighter1_196_243_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_196_243_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        alert(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">You login successfully</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /><img id="Codehighlighter1_250_307_Open_Image" onclick="this.style.display='none'; Codehighlighter1_250_307_Open_Text.style.display='none'; Codehighlighter1_250_307_Closed_Image.style.display='inline'; Codehighlighter1_250_307_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_250_307_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_250_307_Closed_Text.style.display='none'; Codehighlighter1_250_307_Open_Image.style.display='inline'; Codehighlighter1_250_307_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">else</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_250_307_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_250_307_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        alert(</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">user name or password incorrect!</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">);</span>
		</div>
		<p>
				<br />
				<font color="#006400" size="4">支持异步事件<br /></font>
				<br />喜欢像gmail一样，在加载系统时出现小小的loading条，而不是切换页面？Buffalo给你支持。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">onLoading<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />onFinish<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />onError</span>
		</div>
		<p> 你可以定义这些事件，使之符合自己应用的需要。 <br /></p>
		<p>例如 修改等待效果 ：</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">var buffalo </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">new</span>
				<span style="COLOR: #000000"> Buffalo(endPoint);<br /><img id="Codehighlighter1_83_182_Open_Image" onclick="this.style.display='none'; Codehighlighter1_83_182_Open_Text.style.display='none'; Codehighlighter1_83_182_Closed_Image.style.display='inline'; Codehighlighter1_83_182_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_83_182_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_83_182_Closed_Text.style.display='none'; Codehighlighter1_83_182_Open_Image.style.display='inline'; Codehighlighter1_83_182_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />buffalo.events[</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">onLoading</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">] </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> function(state) </span>
				<span id="Codehighlighter1_83_182_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_83_182_Open_Text">
						<span style="COLOR: #000000">{<br /><img id="Codehighlighter1_97_132_Open_Image" onclick="this.style.display='none'; Codehighlighter1_97_132_Open_Text.style.display='none'; Codehighlighter1_97_132_Closed_Image.style.display='inline'; Codehighlighter1_97_132_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_97_132_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_97_132_Closed_Text.style.display='none'; Codehighlighter1_97_132_Open_Image.style.display='inline'; Codehighlighter1_97_132_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    </span>
						<span style="COLOR: #0000ff">if</span>
						<span style="COLOR: #000000"> (state) </span>
						<span id="Codehighlighter1_97_132_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_97_132_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        window.status </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">Loading<img src="http://www.blogjava.net/images/dot.gif" /></span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">;<br /><img id="Codehighlighter1_139_180_Open_Image" onclick="this.style.display='none'; Codehighlighter1_139_180_Open_Text.style.display='none'; Codehighlighter1_139_180_Closed_Image.style.display='inline'; Codehighlighter1_139_180_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif" align="top" /><img id="Codehighlighter1_139_180_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_139_180_Closed_Text.style.display='none'; Codehighlighter1_139_180_Open_Image.style.display='inline'; Codehighlighter1_139_180_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000"> </span>
						<span style="COLOR: #0000ff">else</span>
						<span style="COLOR: #000000"> </span>
						<span id="Codehighlighter1_139_180_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
								<img src="http://www.blogjava.net/images/dot.gif" />
						</span>
						<span id="Codehighlighter1_139_180_Open_Text">
								<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />        window.status </span>
								<span style="COLOR: #000000">=</span>
								<span style="COLOR: #000000"> </span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">Loading complete</span>
								<span style="COLOR: #000000">"</span>
								<span style="COLOR: #000000">;<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align="top" />    }</span>
						</span>
						<span style="COLOR: #000000">
								<br />
								<img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
		</div>
		<p>
				<br />
				<br />
				<font color="#006400" size="4">简单，直观，易于使用<br /><br /></font>Buffalo开发者尽最大努力将API设计的易于使用，无论是客户端还是服务器端，尽可能不让开发者了解buffalo细节。 </p>
		<p>服务器端 ，使用buffalo的开发者，几乎不需要了解buffalo的java代码结构。<u>任何POJO都可以成为Buffalo的服务被暴露出来</u>。 <br />客户端 ，开发者只需要与一个对象交互：Buffalo, 并且只需要与为数不多的方法进行交互即可。任何一个初学者，可以在半小时之内熟悉buffalo并开始开发。<br /> <br /><font color="#006400" size="4"><br />集成Prototype Library<br /></font><br />参考Ruby 简单 的思想，Prototype为真正的web开发提供了简便直接的支持。<strong><font color="#0000ff">Buffalo 1.2版本开始用Prototype语法重写</font></strong>，并直接构建在其之上，<u>这是因为Prototype是可以直接使用，几乎不需学习就可以为web开发带来巨大好处的</u>。 </p>
		<p>
				<br />
				<font color="#006400" size="4">Spring集成</font>
				<br />
				<br />Spring是当前最流行的轻量级容器，Buffalo对它进行了支持。<u>Spring中任意一个配置过的bean, 都可以通过简单的配置被暴露为buffalo服务</u>。 </p>
		<p>
				<br />
				<font color="#006400" size="4">浏览器兼容<br /><br /></font>Buffalo目前支持IE6/Firefox 1.0+浏览器。 </p>
		<p>
				<font color="#006400" size="4">
						<br />支持浏览器前进/后退按钮<br /></font>
				<br />许多大面积使用Ajax的web应用常常陷入一个浏览器前进后退功能失效的困境。Buffalo 1.2版本中解决了这一问题。</p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">只要在主页面中加入buffalo</span>
				<span style="COLOR: #000000">-</span>
				<span style="COLOR: #000000">blank.html的引用<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />并采用buffalo.switchView的方法</span>
		</div>
		<p>你会发现浏览器的前进后退按钮可用，并且能正确地进行导航。 </p>
		<p>
				<br />
				<font color="#006400" size="4">支持数据绑定<br /></font>
				<br />对于一般的数据返回值，buffalo提供了绑定的功能，<u>能够迅速的将javascript对象的值绑定到html元素上</u>。绑定的元素支持<br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">text<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />checkbox<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />radio<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />textarea<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />select<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />span</span>
				<span style="COLOR: #000000">/</span>
				<span style="COLOR: #000000">div<br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />table. <br /><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span>
		</div>
		<p>
				<br />
				<font color="#ff0000" size="5">如何。。。。<br /><br /></font>
		</p>
		<p>
				<font color="#006400" size="4">将表单序列化为一个dto对象？<br /></font>
				<br />在1.2.1版本中，提供了<u>Buffalo.Form.formToBean</u>方法，可以将表单直接序列化为对象。使用方法可见demo应用中的Form demo. 简单用法如下，将表单中的信息转化为一个net.buffalo.demo.form.User对象。<br /><br /></p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">var userObj </span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000"> Buffalo.Form.formToBean(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">form1</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, </span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">net.buffalo.demo.form.User</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">);<br /><img id="Codehighlighter1_149_190_Open_Image" onclick="this.style.display='none'; Codehighlighter1_149_190_Open_Text.style.display='none'; Codehighlighter1_149_190_Closed_Image.style.display='inline'; Codehighlighter1_149_190_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_149_190_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_149_190_Closed_Text.style.display='none'; Codehighlighter1_149_190_Open_Image.style.display='inline'; Codehighlighter1_149_190_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" />buffalo.remoteCall(</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">userService.createUser</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">, [userObj], function(reply)</span>
				<span id="Codehighlighter1_149_190_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">
						<img src="http://www.blogjava.net/images/dot.gif" />
				</span>
				<span id="Codehighlighter1_149_190_Open_Text">
						<span style="COLOR: #000000">{<br /><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />    alert(reply.getResult().username);<br /><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span>
				</span>
				<span style="COLOR: #000000">)</span>
		</div>
		<p>
				<br />转换原则：<br />对于普通text,password,radio,select-one, 直接转化为(name=value)的一个属性；<br />对于select-many, checkbox, 转化为一个String?或者String的List。 </p>
		<p>
				<br />
				<font color="#006400" size="4">Spring集成?</font>
				<br />
				<br />保证Spring正常加载（采用config servlet或者context listener的方式，此处不赘述） <br />在任一个spring配置文件中加入BuffaloConfigurer bean: </p>
		<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee">
				<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">bean name</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">buffaloConfigBean</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000"> </span>
				<span style="COLOR: #0000ff">class</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">net.buffalo.service.BuffaloServiceConfigurer</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">property name</span>
				<span style="COLOR: #000000">=</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">services</span>
				<span style="COLOR: #000000">"</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;</span>
				<span style="COLOR: #000000">map</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />      <strong>  </strong></span>
				<strong>
						<span style="COLOR: #000000">&lt;</span>
						<span style="COLOR: #000000">entry key</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">testSpringService1</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">&gt;&lt;</span>
						<span style="COLOR: #000000">ref bean</span>
						<span style="COLOR: #000000">=</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">yourBeanId</span>
						<span style="COLOR: #000000">"</span>
						<span style="COLOR: #000000">/&gt;&lt;/</span>
						<span style="COLOR: #000000">entry</span>
						<span style="COLOR: #000000">&gt;</span>
				</strong>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />        </span>
				<span style="COLOR: #000000">&lt;!--</span>
				<span style="COLOR: #000000"> oterh entries… </span>
				<span style="COLOR: #000000">--&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">map</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />    </span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">property</span>
				<span style="COLOR: #000000">&gt;</span>
				<span style="COLOR: #000000">
						<br />
						<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" />
				</span>
				<span style="COLOR: #000000">&lt;/</span>
				<span style="COLOR: #000000">bean</span>
				<span style="COLOR: #000000">&gt;</span>
		</div>
		<p>
				<br />Buffalo会在启动时自动加载这个bean, 并加载所有的service. 前台使用方式没有任何不同，<font color="#000000"><u>buffalo一致对待来自于buffalo-service.properties中的服务和来自spring中的服务。 </u></font></p>
		<p>
				<br />
				<font color="#006400" size="4">自定义事件?</font>
		</p>
		<p>buffalo.events["onLoading"] = function(state) {...}<br />事件包括：onLoading, onFinished, onError, onException </p>
		<p>
				<br />
				<font color="#006400" size="4">数据绑定?</font>
		</p>
		<p>buffalo.bindReply(service, params, elementId)<br />或者直接使用<br />Buffalo.Bind.bind(elementId, bindValue) </p>
		<p>
				<br />
				<font color="#006400" size="4">浏览器前进后退?</font>
				<br />加入buffalo-blank.html的iframe引用，id="buffalo-view-history-iframe": </p>
		<p>
				<font color="#0000ff">
						<strong>切换视图的时候，采用buffalo.switchView(viewName), buffalo会自动记录视图切换历史<br />对于不需要纪录的视图，采用buffalo.switchPart(...) 进行排除</strong>
				</font>
		</p>
<img src ="http://www.blogjava.net/liuwentao253/aggbug/80158.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuwentao253/" target="_blank">刘文涛</a> 2006-11-09 15:00 <a href="http://www.blogjava.net/liuwentao253/archive/2006/11/09/80158.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>