大家知道,后台程序通常情况下无法与js进行交互,而我们一般通过组成XML的形式来传递我们想要的数据,或者说用ajax,dwr等,这里只是介绍其中的一种方法,可能不是最好的,但至少能很快的解决问题:
1.所需要取到的数据结构形为:
var object={
"strArr1":[{
"brandId":"1"},{"brandName":"三星"},{"childs":[{"phoneType":"N870"},{}]
}],
"strArr2":[{},{}]
}
2.明白了我们想要的数据结构,之后我们将在Action中对所要的数据进行拼凑,在action中我们可以建立一个Map对象:Map<Brand,List<ClientSoft>> map=new HashMap<Brand,List<ClientSoft>>
拼凑:
public String execute() throws Exception {
Map<Brand, List<ClientSoft>> clientSoftMap = clientSoftManager
.getClientSoftInfo();
Iterator it = clientSoftMap.entrySet().iterator();
StringBuffer sb = new StringBuffer();
sb.append("var str={\"strArr\":[");
while (it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
/* 对键进行处理 */
Brand brand = (Brand) key;
Long brandId = brand.getBrandId();
String brandName = brand.getBrandName();
String brandUrl = brand.getImageUrl();
Object value = entry.getValue();
/* 对值进行处理:子型号,版本号,手机图片,标识软件版本号,软件下载地址,大小,版本,Release号,软件描述,下载次数 */
List<ClientSoft> liCs = (List<ClientSoft>) value;
System.out.println("键:" + key + ";" + "值:" + value);
sb.append("{");
sb.append("\"brandName\":" + "\"" +brandName+"\"");
sb.append(",");
sb.append("\"brandId\":" +"\""+ brandId + "\"");
sb.append(",");
sb.append("\"brandUrl\":" + "\"" + brandUrl +"\"");
sb.append(",");
sb.append("\"childs\":");
sb.append("[");
if (liCs.size() != 0) {
for (ClientSoft clientSoft : liCs) {
sb.append("{");
sb.append("\"phoneType\":" + "\""
+ clientSoft.getPhoneType() + "\"");
sb.append(",");
sb.append("\"ua\":" + "\"" + clientSoft.getUa() + "\"");
sb.append(",");
sb.append("\"imageUrl\":" + "\"" + clientSoft.getImageUrl()
+ "\"");
sb.append(",");
sb.append("\"clientUa\":" + "\"" + clientSoft.getClientUa()
+ "\"");
sb.append(",");
sb.append("\"URL\":" + "\"" + clientSoft.getUrl() + "\"");
sb.append(",");
sb.append("\"softSize\":" + "\"" + clientSoft.getSoftSize()
+ "\"");
sb.append(",");
sb.append("\"version\":" + "\"" + clientSoft.getVersion()
+ "\"");
sb.append(",");
sb.append("\"release\":" + "\"" + clientSoft.getRelease()
+ "\"");
sb.append(",");
sb.append("\"description\":" + "\""
+ clientSoft.getDescription() + "\"");
sb.append(",");
sb.append("\"createDate\":" + "\""
+ clientSoft.getCreateDate() + "\"");
sb.append(",");
sb.append("\"downloadCount\":" + "\""
+ clientSoft.getDownloadCount() + "\"");
sb.append("},");
}
sb = new StringBuffer(sb.toString().substring(0,
sb.length() - 1));
}
sb.append("]");
sb.append("},");
}
sb=new StringBuffer(sb.substring(0, sb.length() - 1));
sb.append("]}");
String str=sb.toString();
ServletActionContext.getRequest().setAttribute("str",
str);
return SUCCESS;
}
4.到页面执行
function initBrand(){
var strTmp='${requestScope.str}';
eval(strTmp);
phoneStr=str;
for(var o = 0; o < str.strArr.length; o++){
var op = document.createElement("OPTION");
op.text=str.strArr[o].brandName;
op.value=o;
document.getElementById("vendor").options.add(op);
}
${"brandSelId"}.value=0;
}
分享到:
相关推荐
总结来说,"JavaScript_事件驱动应用程序的低代码编程.zip"文件包可能包含了一个介绍如何使用JavaScript的事件驱动特性和Node-RED低代码平台来构建应用程序的教程或实例。通过学习这个主题,开发者可以更高效地创建...
Git-js是针对Node.js环境设计的一个轻量级库,它提供了一个简单易用的接口,允许开发者在他们的Node.js应用中直接调用Git命令,无需离开JavaScript的舒适区。 ### Git-js核心特性 1. **轻量级**:Git-js的核心设计...
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地推动了前端与后端技术的融合。deThread 库是 Node.js 生态系统中的一员,专为实现浏览器中的...
总之,Kefir.js是Node.js开发中一个强大的工具,它利用响应式编程和函数式编程的理念,提供了高性能、低内存占用的解决方案。通过深入学习和使用Kefir.js,开发者可以构建出更健壮、更灵活的Node.js应用。
总之,LLRT低延迟运行时为JavaScript无服务器应用提供了一个颇具潜力的高性能解决方案,有望推动JavaScript在高并发、低延迟场景下的应用发展。随着技术的不断成熟,我们期待看到更多创新的轻量级运行时解决方案出现...
这个库的主要优点是它的简洁性和低资源占用,使得它成为处理cookie的理想选择,尤其适用于那些对性能和加载速度有较高要求的项目。在3kb(未压缩)的大小下,gzip压缩后更是减小到仅1.73kb,这意味着它可以在不影响...
Node.js是一种开源、跨平台的JavaScript运行环境,它允许开发者在服务器端运行JavaScript代码,极大地扩展了JavaScript的应用领域。Node.js基于Google Chrome的V8引擎,具有高效、高性能的特点,尤其适合开发网络...
本文将探讨一个名为“demo”的示例项目,它利用这两种技术实现了一个简单的物联网应用。 **一、JavaScript在物联网中的应用** JavaScript,通常用于构建Web前端交互,但在物联网领域,它也能通过Node.js在服务器端...
在标签中,"Node.js开发-其它杂项"指出这是一项与Node.js开发相关的技术,尽管它可能不属于常规的类别,但它是Node.js生态系统中的一个重要补充,对于那些需要强大搜索功能的项目来说,FlexSearch.js是一个有价值的...
Turbo-Net是一个针对Node.js平台优化的高性能、低内存占用的TCP库,它专为处理大量并发连接和高效数据传输而设计。这个库的核心特点在于其对性能的极致追求和对内存管理的精细控制,使得在高负载环境中也能保持稳定...
GraalVM是Oracle Labs推出的一款开源虚拟机,它集成了JVM(Java虚拟机)和JavaScript引擎,同时还提供了一个完整的运行时环境,用于运行高性能的多语言应用。GraalVM的核心特性在于其编译器——Graal编译器,它能够...
Vue.js,作为这个压缩包中的标签,是一个流行的前端JavaScript框架,常用于构建用户界面。Vue的特点包括其轻量级、易学习、可扩展性强以及良好的社区支持。结合低代码引擎,Vue.js可以提供一套完整的前后端开发工具...
Senna.js 是一个速度超快的单页应用程序引擎,提供了几个低级别的 API,可以帮助你打造现代化的基于 Web 的应用程序。更重要的是,搜索引擎蜘蛛应该能够索引相同的内容。 通过使用 HTML5 History API,我们可以...
对于Windows XP用户来说,选择一个兼容的nw.js版本至关重要,因为更高版本可能不再支持这个老化的操作系统。nwjs-sdk-v0.14.7-win-ia32可能就是开发者能够在XP上运行和调试应用的最佳选择。不过,需要注意的是,由于...
PDF.js是Mozilla开发的一个开源项目,它允许在Web浏览器中以纯JavaScript实现PDF文档的查看和渲染。这个项目的目标是提供一个与浏览器无关、高质量的PDF阅读体验。在这个特定的版本,v2.13.94-beta,特别强调了对...
例如,如果一个老版本的浏览器不支持Promise,polyfill.js可以包含一个Promise的实现,让开发者可以在旧浏览器上使用Promise。这种填充方式使得代码能在不支持新标准的环境中运行,而不必完全放弃现代化的编程实践。...
《高性能JavaScript》是一本专为前端开发人员设计的深度学习指南,它涵盖了JavaScript语言的核心特性以及如何优化这些特性以实现高性能的Web应用。这本书详细解析了JavaScript在实际开发中的各种性能问题,并提供了...
Vue.js 是一款流行的前端 JavaScript 框架,它是一款轻量级、高性能的框架,用于构建交互式的用户界面和单页应用程序。Vue.js 的特点包括: 响应式数据绑定:Vue.js 实现了数据的双向绑定,当数据发生变化时,视图...
一个基于JavaScript、WebAssembly、WebGPU的国产自研3D引擎和元宇宙应用开发平台。一个以WebAssembly内核为支撑的WebGPU渲染引擎;一个支持在VR模式下使用、支持动态可交互图表ECharts的UI框架;一个用于着色器、...
标题中的“一款高效的Vue低代码表单,可视化设计,一键生成源码”揭示了这是一个基于Vue.js框架的低代码开发工具,特别强调了其高效性、可视化设计以及源码自动生成的功能。这样的工具大大简化了Web应用开发过程,...