如何...
如何...
- 开始一个Buffalo项目
- 在现有项目中增加Buffalo特征
- 从旧的版本升级
- 与Spring集成
- 把web页面中的from序列化为对象
- 自定义事件
- 数据绑定
- 浏览器前进/后退
- 访问/更新Session
开始一个Buffalo项目
请参考快速教程。这个教程说明如何建立一个新应用。或者下载Buffalo的发布版本,并复制它作为项目的"骨架"。
在现有项目中增加Buffalo特征
如果你想使用Buffalo的web远程调用的特征,只需要复制buffalo-<version>.jar(还有commons-logging.jar,如果没有提供的话
)和buffalo.js。请参考关于使用Buffalo的其它文档。
如果你需要Buffalo来委派你的页面流(page flow),那么请像demo应用中那样把页面分开。请不要错过最佳实践。在"最佳实践"中,可以找到你的应用是否适合OPOA的依据。
从旧的版本升级
升级十分的容易。
- 如果你从1.1版本升级:
- 删除burlap*.jar,替换为buffalo-<version>.jar。
- 替换buffalo.js为最新版本。
- 去掉在Spring中定义的endpoint servlet。目前我们仅需要一个servlet。
- 修改代码:
- JavaScript: endpoint修改为"yourappname/bfapp";
- Server: 无需改动。
- 如果你从1.2版本升级:
- 删除burlap*.jar,替换为buffalo-<version>.jar。
- 替换buffalo.js为最新版本。
- 如果可能的话,修改继承自BuffaloService的那些java代码。将其中相应的方法替换为RequestContext.getContext().getXXX。当然,我们始终会向后兼容。
- 就这些了。
与Spring集成
集成Spring非常简单。首先你需要确定Spring能被成功装载(使用config servlet或者context listener)。请参考Spring的相关文档。此后,如下增加一个config bean到Spring配置文件中。
<bean name="buffaloConfigBean" class="net.buffalo.service.BuffaloServiceConfigurer"> <property name="services"> <map> <entry key="testSpringService1"><ref bean="yourBeanId"/></entry> <\!-\- oterh entries... --> </map> </property> </bean>
就是这些了!当应用被启动后,Buffalo将找到这个bean并装载所有定义在服务属性中的服务。服务来自buffalo-service.properties和Spring并没有区别。
Buffalo客户端看来都是一样的。![]()
把web页面中的from序列化为对象
这里用到了Buffalo1.2.1版本的Buffalo.Form.formToBean方法,它能把一个form直接序列化为一个对象。你可以看在demo应用中Form demo。在这里有一个非常简单的例子,用来表现一下我们是如何把一个form到转换为net.buffalo.demo.form.User对象的:
var userObj = Buffalo.Form.formToBean("form1", "net.buffalo.demo.form.User"); buffalo.remoteCall("userService.createUser", [userObj], function(reply) { alert(reply.getResult().username); } )
序列化原则:
- 对于简单的form域(field),如:text, password, radio, select(单选),Buffalo将field值赋值给对象中名为fieldName的属性。
- 对于select(多选),checkbox,Buffalo将List<String>赋值给对象中名为fieldName的属性。
自定义事件
Buffalo support customized event when doing remoting call:
Buffalo支持在进行远程调用时自定义事件:
| 事件 | 描述 | 参数 | 默认实现 |
| onLoading | 发生在请求正被装载时 |
true or false | 一个buffalo loading层(div)将出现在屏幕的右上角 |
| onFinished | 当完成请求时 | nothing | 无 |
| onError | 当发生错误时 (一般是500或者404错误) | xmlhttp object | 显示一个红色的层(div) |
| onException | 当在调用服务的过程中,抛出异常时 | Buffalo.Fault object | 显示一个黄色的层(div) |
| onTimeout | 发生超时,默认为10秒 | nothing | alert("timeout") |
If you want to customize the events, You can
如果你想自定义事件,可以参考下面的代码:
var buffalo = new Buffalo(endpoint, async, {onLoading: yourLoadingFunction, onError: yourErrorHanlder ...} )
或者
buffaloInstance.events["onLoading"] = function(state) { if (state) { //displaying message ... } }
数据绑定
Buffalo支持将javascript对象的值绑定到html成员(element)中。
buffalo.bindReply(service, params, elementId)
上面的代码尝试进行一次远程调用,然后将返回结果直接绑定到成员(element)。(来源 www.iocblog.net)
同理也可使用Buffalo.Bind.bind(elementId, bindValue)方法。
浏览器前进/后退
这个特性需要buffalo-blank.html文件。下载的二进制包中包含此文件。
<iframe src="buffalo-blank.html" id="buffalo-view-history-iframe" width="0" height="0" style="display:none;"></iframe>
当你想切换视图时,使用buffalo.switchView(viewName)方法,Buffalo将自动记住历史。如果在一些视图中不需要此特征,可以使用buffalo.switchPart(...)方法排除。细节请阅读javascript api。
访问/更新Session
从Buffalo2.0开始,你方便地可以get/set session/cookie/context的值。通过使用RequestContext类,你能以更加轻松的方式全权控制它们的生命周期值。(来源 www.iocblog.net)
// Get a thread-safe request context context = net.buffalo.request.RequestContext.getContext(); // Get session value Map session = context.getSession(); String username = (String)session.get("username"); // Update the session value, will refresh the session immediately session.put("username", "newUsername"); // cookie Map cookieMap = context.getCookie(); Cookie cookie = cookieMap.get("cookieName"); // update cookie Cookie c = new Cookie("name", "value"); cookieMap.put(c.getName(), c); // ServletContext Map application = context.getApplication(); Object value = application.get("key"); ...
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。