- 浏览: 961695 次
- 性别:
- 来自: 江西上饶
文章分类
- 全部博客 (460)
- p.spring (56)
- p.maven (20)
- p.ant (17)
- p.jee (18)
- p.jse (33)
- p.ofbiz (31)
- p.软件工程 (8)
- p.struts2 (5)
- p.hibernate (5)
- linux (25)
- 设计模式 (2)
- p.javascript (11)
- 硬件 (1)
- p.jsp (2)
- p.windows批处理 (1)
- 操作系统问题 (5)
- 算法 (1)
- p.mysql (7)
- p.sql (5)
- p.c (1)
- google产品 (0)
- 内存 (1)
- p.struts (1)
- p.freemarker (7)
- p.css (4)
- p.log4j (10)
- p.html (3)
- 淘宝产品 (0)
- 其他 (3)
- 编译器 (0)
- svn (4)
- p.spring.security (11)
- 图形 (0)
- p.xml (1)
- p.ssh (0)
- p.jquery (4)
- p.jdbc (3)
- p.flex (0)
- p.c++ (0)
- p.c#Net (0)
- p.assembly (0)
- p.sqlserver (0)
- p.其他 (3)
- p.webwork (21)
- p.wap (12)
- p.cglib (1)
- p.jee服务器 (11)
- windows (2)
- p.iphone (1)
- p.java.分布式与集群 (2)
- p.ibatis (16)
- p.eclipse (5)
- 架构 (2)
- http协议 (5)
- 我的个人标准 (2)
- 多线程 (1)
- 奇怪问题 (5)
- p.jira (13)
- p.httpclient (1)
- 服务器.apache (11)
- 安全防范 (1)
- p.PODAM (1)
- p.junit (16)
- fop (2)
- 硬盘安装 (1)
- powerdesigner (0)
- 单元测试 (1)
- apache commons (4)
- tomcat+apache集群 (10)
- 各类诡辩 (1)
- 安卓 (8)
- qvod (1)
- java编程基础知识考试考点及答案 (0)
- 工作总结 (4)
- oracle (0)
- spring的util工具 (3)
- json (2)
- maven (3)
- jms (19)
- p.bat (3)
- hadoop (2)
- git (3)
- nginx (1)
- p.移动开发 (1)
- shiro (3)
- 游戏破解 (1)
- react-native (7)
- ios开发 (1)
- webmagic (6)
- socks5 (1)
最新评论
-
weituotian:
说的不好,没人看的
公司系统中的菜单功能和权限功能 -
石不易:
非常详细的注解~
绑定端口和IP,Listen 与VirtualHost指令 -
spring_springmvc:
spring mvc demo教程源代码下载,地址:http: ...
spring mvc -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装 -
liyixing1:
PandaDONG 写道谢谢你啊,我已经下下来了,只是还有很多 ...
jira war安装
首先确定下的是MultiForm的表单命名是FieldName + _o_数字
后台在处理改类型的Form的时候,一般会进行如下代码
UtilHttp
.parseMultiFormData(UtilHttp.getParameterMap(request));
UtilHttp.getParameterMap(request)这里不是重点,这里只是将请求参数转换成需要的Map格式,重要看parseMultiFormData,它是处理MultiForm表单请求数据的。
进入
public static Collection<Map<String, Object>> parseMultiFormData(Map<String, Object> parameters) {
//rows,请求参数中哪些参数会被保留由它决定
FastMap<Integer, Map<String, Object>> rows = FastMap.newInstance(); // stores the rows keyed by row number
//开始处理每个参数
for (String key: parameters.keySet()) {
//这里key==null不用看就知道,key.length() <= ROW_SUBMIT_PREFIX_LENGTH这里的ROW_SUBMIT_PREFIX_LENGTH值是13,为神马是13呢?这是因为它将_rowSubmit_o_开头的参数作为判断该请求参数是否有效,如_rowSubmit_o_1=Y,那么所有FieldName + _o_1的参数都是有效地。_rowSubmit_o_是13个字符。
if (key == null || key.length() <= ROW_SUBMIT_PREFIX_LENGTH) continue;
//检查是否存在MULTI_ROW_DELIMITER(_o_)
if (key.indexOf(MULTI_ROW_DELIMITER) <= 0) continue;
if (!key.substring(0, ROW_SUBMIT_PREFIX_LENGTH).equals(ROW_SUBMIT_PREFIX)) continue;
//检查值是否Y
if (!parameters.get(key).equals("Y")) continue;
//计算出它的数字
// decode the value of N and create a new map for it
Integer n = Integer.decode(key.substring(ROW_SUBMIT_PREFIX_LENGTH, key.length()));
Map<String, Object> m = FastMap.newInstance();
//得出所有有效地数字。
//这里我们还可以知道通过row可以取出数字
m.put("row", n); // special "row" = N tuple
rows.put(n, m); // key it to N
}
// 只保留有效地参数
for (String key: parameters.keySet()) {
// skip keys without DELIMITER and skip ROW_SUBMIT_PREFIX
if (key == null) continue;
int index = key.indexOf(MULTI_ROW_DELIMITER);
if (index <= 0) continue;
if (key.length() > ROW_SUBMIT_PREFIX_LENGTH && key.substring(0, ROW_SUBMIT_PREFIX_LENGTH).equals(ROW_SUBMIT_PREFIX)) continue;
// get the map with index N
Integer n = Integer.decode(key.substring(index + MULTI_ROW_DELIMITER_LENGTH, key.length())); // N from ${param}${DELIMITER}${N}
Map<String, Object> map = rows.get(n);
if (map == null) continue;
// 这里最后得到的是哪些数字是有效地,这些数字有哪些参数。
String newKey = key.substring(0, index);
map.put(newKey, parameters.get(key));
}
// return only the values, which is the list of maps
return rows.values();
}
后台在处理改类型的Form的时候,一般会进行如下代码
UtilHttp
.parseMultiFormData(UtilHttp.getParameterMap(request));
UtilHttp.getParameterMap(request)这里不是重点,这里只是将请求参数转换成需要的Map格式,重要看parseMultiFormData,它是处理MultiForm表单请求数据的。
进入
public static Collection<Map<String, Object>> parseMultiFormData(Map<String, Object> parameters) {
//rows,请求参数中哪些参数会被保留由它决定
FastMap<Integer, Map<String, Object>> rows = FastMap.newInstance(); // stores the rows keyed by row number
//开始处理每个参数
for (String key: parameters.keySet()) {
//这里key==null不用看就知道,key.length() <= ROW_SUBMIT_PREFIX_LENGTH这里的ROW_SUBMIT_PREFIX_LENGTH值是13,为神马是13呢?这是因为它将_rowSubmit_o_开头的参数作为判断该请求参数是否有效,如_rowSubmit_o_1=Y,那么所有FieldName + _o_1的参数都是有效地。_rowSubmit_o_是13个字符。
if (key == null || key.length() <= ROW_SUBMIT_PREFIX_LENGTH) continue;
//检查是否存在MULTI_ROW_DELIMITER(_o_)
if (key.indexOf(MULTI_ROW_DELIMITER) <= 0) continue;
if (!key.substring(0, ROW_SUBMIT_PREFIX_LENGTH).equals(ROW_SUBMIT_PREFIX)) continue;
//检查值是否Y
if (!parameters.get(key).equals("Y")) continue;
//计算出它的数字
// decode the value of N and create a new map for it
Integer n = Integer.decode(key.substring(ROW_SUBMIT_PREFIX_LENGTH, key.length()));
Map<String, Object> m = FastMap.newInstance();
//得出所有有效地数字。
//这里我们还可以知道通过row可以取出数字
m.put("row", n); // special "row" = N tuple
rows.put(n, m); // key it to N
}
// 只保留有效地参数
for (String key: parameters.keySet()) {
// skip keys without DELIMITER and skip ROW_SUBMIT_PREFIX
if (key == null) continue;
int index = key.indexOf(MULTI_ROW_DELIMITER);
if (index <= 0) continue;
if (key.length() > ROW_SUBMIT_PREFIX_LENGTH && key.substring(0, ROW_SUBMIT_PREFIX_LENGTH).equals(ROW_SUBMIT_PREFIX)) continue;
// get the map with index N
Integer n = Integer.decode(key.substring(index + MULTI_ROW_DELIMITER_LENGTH, key.length())); // N from ${param}${DELIMITER}${N}
Map<String, Object> map = rows.get(n);
if (map == null) continue;
// 这里最后得到的是哪些数字是有效地,这些数字有哪些参数。
String newKey = key.substring(0, index);
map.put(newKey, parameters.get(key));
}
// return only the values, which is the list of maps
return rows.values();
}
发表评论
-
EL表达式,ognl表达式对集合过滤和投影
2013-11-23 11:48 1212GONL<s:property value=" ... -
整站国际化方案
2012-11-28 17:46 1115当前常见的实现方式,主要由两种方案实现 1.通过locale ... -
form Display元素
2011-09-15 14:46 1340对于display元素,在代码 MacroFormRender ... -
tomcat中运行ofbiz
2011-09-07 17:09 1127http://blog.csdn.net/kongqz/art ... -
string-map-prefix string-list-suffix
2011-08-31 00:54 1667一般service都是用在event ... -
ofbiz文档
2011-08-29 18:07 1203http://ofbiz.apache.org/docs/ -
关于ofbiz-component.xml文件中的resource-loader
2011-08-28 19:44 1330寻找文件的方式最后是通过ComponentConfig.jav ... -
ofbiz中几个占位符
2011-08-28 19:04 1103OFBiz认为一些键名为反馈消息的占位符。 进入Screen ... -
ofbiz中各类安全代码解析
2011-08-28 18:49 1766security.hasPermission方法 publi ... -
OFBizCMS
2011-08-28 17:01 1336OFBizCMS是基于OFBiz框架的CMS系统,集合了邮件, ... -
UserLogin Party Person PartyGroup四个model关系
2011-08-27 00:05 1938只需从userloginmodel入手 其model定义是 & ... -
通过jdbc sql调用,并将结果转化成GenericValue
2011-08-26 23:48 18881.查看GenericDelegator的代码,发现代码最后是 ... -
EntityUtil
2011-08-26 23:13 1252排序,通常有的时候我们不希望通过order by来排序查询。而 ... -
关于实体过期快捷方式
2011-08-26 22:40 1296在java代码中查询实体未过期的快捷方式是 EntityCon ... -
ofbiz各类问题
2011-08-26 10:58 11521.eclipse下面运行出现 Exception in th ... -
screen,menu,form等里面的action
2011-08-25 19:00 1029以screen为例 其他类似 screen的action内容 ... -
controlservlet
2011-08-24 22:19 1780control servlet 需要为他在web.xml中指定 ... -
event java
2011-08-24 12:32 1085controller.xml <handler nam ... -
scree 中的几个内置对象
2011-08-24 12:27 1230· screens是一个org.ofbiz.widget. ... -
ofbiz处理流程
2011-08-23 18:36 1324关于control servlet和请求处理,在OFBiz中有 ...
相关推荐
**Multiform:jQuery脚本实现页面内多形式切换** 标题中的"Multiform"是一个基于jQuery的脚本,它允许开发者在同一个网页上创建...理解其工作原理和使用方式,能够有效优化网站的表单管理部分,提供更流畅的用户体验。
通过头戴式显示器和交互设备,用户可以沉浸在由3D模型构建的虚拟世界中,为教育、娱乐等领域提供了全新的体验方式。 总的来说,“album-3D-Multiform.zip”专辑展示了3D设计的多面性,不仅涵盖了基础的技术知识,也...
具体步骤是:进入“功能”(Function)菜单,找到“Navigator: Disable Multiform”,如果想要关闭“关闭其他表单”功能,将该功能添加到菜单排除项中;反之,如果想要开启,移除这个排除项。 2. **通过SQL语句永久...
当ActionForm中的属性涉及到对象数组时,处理方式就变得稍微复杂一些。以下将详细介绍如何处理ActionForm属性中存在对象数组的情况。 首先,我们需要创建一个实体类(Entity),例如`Student`,它包含一些基本属性...
Multiform的Javascript框架可能集成了流行的前端库如jQuery或React,以提供强大的DOM操作和事件处理能力。同时,XSL编译器则将XML定义转换为实际的HTML和CSS,这使得开发者可以通过XML模板来设计用户界面,而无需...
该项目是通过引导的。 可用脚本 在项目目录中,可以运行: npm start 在开发模式下运行该应用程序。 打开在浏览器中查看它。 如果您进行编辑,则页面将重新加载。 您还将在控制台中看到任何棉绒错误。...
在Python web开发中,WTForms是一个非常常用的表单处理库,它提供了强大的验证和渲染功能。然而,在实际项目中,可能会遇到一个常见的问题:ID冲突。这个问题通常发生在多个相同表单或者动态生成的表单中,导致前端...
这个项目是用引导的。可用脚本在项目目录中,您可以运行:npm start 在开发模式下运行应用程序。 打开在浏览器中查看。 如果您进行编辑,页面将重新加载。 您还将在控制台中看到任何 lint 错误。...
基础模板可能不包含复杂的依赖管理和构建工具,而是专注于展示最核心的 JavaScript 代码编写和组织方式。 更进一步,该项目可能在其他分支中添加了代码质量检查工具,例如 ESLint,用于检测并防止编程错误和不符合...
多种形式 ... multiform命令(安装为 devDependency、 并在 prepublish 上运行)将您的src文件夹构建到dist-0 、 dist-1等中,与您的 Babel 配置相对应。 您的主脚本会自动选择并加载当前 V8 版本
Stratification of pseudoprogression and true progression of glioblastoma multiform based on longitudinal diffusion tensor imaging without segmentation
这不仅包括前端表单的设计、后端逻辑处理,还包括与数据库交互的具体实现。以下是详细的步骤: #### 1. 数据库准备 首先,我们需要在MySQL中创建一个表用于存储图片数据。该表应包含至少两个字段:`name`(用于存储...
在JavaScript的世界里,jQuery是一个非常流行的库,它简化了DOM操作、事件处理和Ajax交互等任务。本主题将深入探讨如何使用jQuery来实现表格行的动态添加和删除,这对于创建数据密集型应用或者需要用户输入多条信息...
5. Multiform Projects(多窗体项目):在应用程序中,经常需要同时操作多个窗体或用户界面,比如一个主窗体和多个子窗体。如何设计和管理这些窗体,以及它们之间的数据传递和交互是多窗体项目要解决的问题。 6. ...
Swing Contact Manager A simple Swing application for managing a personal contact list. The multiform UI was created and can be edited using Matisse4MyEclipse.
Planning on soil utilization for the Coastal Mekong River Delta, Viet Nam in period 2005-2010,TRAN THAI... Ben Tre, Tra Vinh, Soc Trang, Bac Lieu, Ca Mau and Kien Giang, it is the multiform ecology with
When the net gain a0 changes, it is found that, 1) the shape of the curve of the signal-to-noise ratio (SNR) versus the pump noise self-correlation time \tau exhibits a changing process of multiform ...
3.3 处理事件... 25 3.3.1 建立预定事件. 25 IV .NET移动通信程序设计 3.3.2 建立非预定事件... 26 3.4 使用不同的浏览器...... 27 第 4 章程序调试 29 第5 章 cookies... 32 第6 章窗体控件 35 第7 章 Web ...
get-gh-贡献者从github获取并服务我们的用户和贡献者数据安装> npm install用法> node src/fetch.js# will create a folder named data原料药> npm start# starts an API on port 9090... 其他选项: ipld , multiform