1.DWR配置和使用
设置DWR的使用是简单的:
将DWR的jar文件拷入Web应用的WEB-INF/lib目录中,
在web.xml中增加一个servlet声明,并创建DWR的配置文件。DWR的分发中需要使用一个单独的jar文件。
你必须将DWR servlet加到应用的WEB-INF/web.xml中。
在WEB-INF目录下创建一个dwr.xml文件
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd">
<dwr>
<allow>
<create creator="new" javascript="Assembler">
<param name="class"
value="com.systop.ec.Assembler" />
<include method="getTable" />
</create>
</allow>
<signatures>
<![CDATA[
import java.util.Map;
import java.util.List;
import com.systop.ec.Assembler;
import javax.servlet.http.HttpServletRequest;
Assembler.getTable(Map<String, List> parameterMap, HttpServletRequest request);
]]>
</signatures>
</dwr>
2.创建POJO
DWR使用(works with)POJOs。这个非常符合我们的需要,因为eXtremeTable有足够的API使用Jsp标签来构造表。
实际上,JSP标签只不过是eXtremeTable Java API的前端。首先,我将展示构造表的方法:
public class Assembler {
private Object build(TableModel model, List pres) throws Exception {
Table table = model.getTableInstance();
table.setTableId("assembler");
table.setItems(pres);
table.setAction(model.getContext().getContextPath() + "/userAction.do");
table.setTitle("ET+AJAX");
table.setImagePath(model.getContext().getContextPath()+"/images/table/*.gif");
table.setRowsDisplayed(3);
table.setOnInvokeAction("buildTable('assembler')");
model.addTable(table); Row row = model.getRowInstance();
row.setHighlightRow(Boolean.FALSE);
model.addRow(row); Column columnName = model.getColumnInstance();
columnName.setProperty("name");
model.addColumn(columnName); Column columnNickName = model.getColumnInstance();
columnNickName.setProperty("nickname");
model.addColumn(columnNickName); Column columnTerm = model.getColumnInstance();
columnTerm.setProperty("term");
model.addColumn(columnTerm);
return model.assemble();
} /**
* 这个方法调用比较频繁,它执行双重职责。它需要被Controller(如果使用Spring的话)在第一次调用,
* 如果使用Struts就等同于Action类。 随后,当使用AJAX时,这个方法也需要被调用,但是这次将传入一个
* 定制的parameterMap。parameterMap将包含eXtremeTable使用AJAX需要的所有参数。当你看了 Controller
* 和JSP后,这点将更加清晰。
* @param parameterMap
* @param request
* @return
*/
public String getTable(Map parameterMap, HttpServletRequest request) {
WebApplicationContext webApplicationContext = WebApplicationContextUtils
.getWebApplicationContext(request.getSession().getServletContext());
PresidentsDao presidentsDao = (PresidentsDao) webApplicationContext.getBean("presidentsDao");
List presidents = presidentsDao.getPresidents();
Context context = null;
if (parameterMap == null) {
context = new HttpServletRequestContext(request);
} else {
context = new HttpServletRequestContext(request, parameterMap);
}
TableModel model = new TableModelImpl(context);
try {
return build(model, presidents).toString();
} catch (Exception e) {
e.printStackTrace();
}
return "";
}
}
3.创建Action
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception { Assembler assembler = new Assembler(); Object viewData = assembler.getTable(null, request); request.setAttribute("assembler", viewData); return mapping.findForward("userList"); }
Action在被第一次调用时来构建表。它调用POJO并将表传给request。注意空值(null)如何使用parameterMap传输。
这是因为第一次表被构造时,没有对应表需要知道的actions
4.创建JSP
通过引入(importing)合适的javascript文件来开始构建JSP页面。唯一需要包含进工程的javascript文件
是extremecomponents.js,其它的javascript文件申明都是DWR使用的。
<script type="text/javascript" src="<c:url value="/dwr/interface/Assembler.js"/>"></script>
<script type="text/javascript" src="<c:url value="/dwr/engine.js"/>"></script>
<script type="text/javascript" src="<c:url value="/dwr/util.js"/>"></script>
<script type="text/javascript" src="<c:url value="/js/extremecomponents.js"/>"></script>
接着,插入钩子(hook)来显示表,div被用来调用innerHtml并构建新的标签。
<div id="tableDiv"> <c:out value="${assembler}" escapeXml="false"/> </div>
最后,添加javascript来调用DWR的钩子(hooks)。
<script type="text/javascript">
function buildTable(form) {
var parameterMap = getParameterMap(form);
Assembler.getTable(parameterMap, showTable);
}
function showTable(table) {
document.getElementById('tableDiv').innerHTML=table;
}
</script>
getParameterMap()方法包含在extremecomponents.js文件中,将的到所有的form参数。你需要传入一个 form id的参照。
记住,eXtremeTable本质上是一个form组建,tableid作为form id使用。默认的tableId为ec,但是你通常想要设置tableId,
以示大家能更容易阅读你的代码。你将使用parameterMap调用 POJO的getTable方法。showTable是一个callback告诉DWR当从
getTable()方法返回时将调用什么操作。
参考:
http://www.blogjava.net/lucky/archive/2006/03/27/37623.html
分享到:
- 2006-09-25 15:10
- 浏览 2971
- 评论(0)
- 论坛回复 / 浏览 (0 / 3178)
- 查看更多
相关推荐
综上所述,`AjaxJson`实体类与`fastjson`库的结合使用,可以极大地提高后端处理Ajax请求和响应的效率,同时简化了前后端之间的数据交互。在开发过程中,通过这样的设计,可以使得接口返回更加规范,提高代码的可读性...
主要是使用改程序熟悉下memchache缓存 文件列表: ...--getChatList() ...使用方式: 首先安装memchache服务,然后memcache.exe -d start开启服务 其他的放到工作目录下就行了 sunshine<sir_vip@live.cn>
2. 使用分页标签(如`<et:pagination>`)设置相关参数,如总记录数、每页显示条数等。 3. 标签内部会生成相应的HTML代码,展示分页按钮和链接。 4. 当用户点击分页链接时,通过AJAX技术向服务器发送请求,获取对应页...
ET3(EditorTools)全自动采集器 软件特点:【全自动无人值守】无需人工值守,24小时自动实时监控目标,实时高效采集,昼夜不停为您提供内容更新。满足长期运行需求,将您从繁重工作中解脱【适用广泛】最全能的采集...
在使用Ajax技术进行异步数据交互时,传统的处理方式可能会失效,因为Ajax请求不会像普通HTTP请求那样自动处理服务器返回的重定向。本文将详细探讨如何在使用Ajax时有效地处理用户session失效问题。 首先,我们需要...
对于松下FP-XH C60ET型号的PLC,主要的通讯方式包括串口通讯和以太网通讯。串口通讯依赖于RS-232或RS-485标准,适用于短距离、小数据量的场合;而以太网通讯则可以支持长距离、大数据量的高速传输。开发者在选择通讯...
本资源“基于jQuery实现的et大屏展示源码”提供了使用jQuery技术实现这类效果的具体实践。jQuery作为一个流行的JavaScript库,简化了DOM操作、事件处理、动画效果以及Ajax交互,使得开发者能够更高效地构建动态网页...
- 在处理错误时,`error`回调函数提供了xhr(XMLHttpRequest对象)、ts(异常类型)和et(异常文本)三个参数,可以根据这些信息调试问题。 - 在使用`contentType: "application/json"`时,确保服务器端能够正确...
Ajax-IkeyPro-Java-Web.zip,Réalisation et déd e veloppement d'une应用程序电子商务,http://www.ikeypro.ca,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它...
包括1台 西门子1500PLC程序,2台触摸屏TP1500程序,9个智能远程终端ET200SP Profinet连接 15个Festo智能模块Profinet通讯 10台Fanuc发那科机器人Profinet通讯 3台G120变频器Profinet通讯 2台智能电能管理仪表PAC3200...
EPLAN电气项目图纸集合是电气工程领域中不可或缺的资源,它包含了变频器、伺服系统、西门子PLC1500以及ET200S分布式I/O模块的详细设计与配置。在电气自动化与控制系统的规划、设计和施工中,这些图纸提供了直观的...
12. **搜索引擎技术**:基于Ajax+Lucene构建的搜索引擎,涉及到搜索算法、索引构建和全文检索。 13. **云计算与大数据**:多语种网络硬盘系统可能涉及到云存储技术,如Amazon S3或Google Cloud Storage。 14. **...
在本程序中,共有八种机器学习模型参与对比,分别是决策树(DT)、判别分析(DA)、集成树(ET)、高斯混合模型(GMM)、k近邻(KNN)、多分类支持向量机(MSVM)、支持向量机(SVM)、随机森林(RF)。每种模型都有...
一些题目还涉及到特定的技术框架,如.NET平台、PowerDesigner用于数据库建模,或者Ajax用于提高Web应用的用户体验,还有P2P网络模型的即时通讯软件开发,涉及网络编程和分布式系统。 在系统设计中,还会涉及到软件...
9个智能远程终端ET200SP Profinet连接 15个Festo智能模块Profinet通讯 10台Fanuc发那科机器人Profinet通讯 3台G120变频器Profinet通讯 2台智能电能管理仪表PAC3200 4个GRAPH顺控程序 图尔克RFID总线模组通讯 和MES...
JavaScript是非阻塞的,使用回调函数、Promise、async/await来处理异步操作,如Ajax请求、定时器等。 **模块系统**: 在现代JavaScript中,我们可以使用ES6的`import`和`export`关键字进行模块导入和导出,或者使用...
西门子S7-1200 PLC(可编程逻辑控制器)项目是一项涵盖了多个自动化控制技术的综合性工程应用,其核心在于通过西门子的ET200分布式I/O站点和CPU1214中央处理单元,实现对工业过程的有效监控和管理。项目运用了博途...
信捷PLC(XDH-60T4-E) HMI(TG765S-ET) 金属件非标打磨工作站PLC程序 HMⅠ程序 电气图 全套资料。 EtherCAT通讯控制7轴(台达ASD-A2-E)做直线、圆弧插补及加工路径连续运行,加工速度倍率实时修改,实现毛刺厚时自动...