- 浏览: 84871 次
- 性别:
- 来自: 福建福州
文章分类
最新评论
-
walkingp:
非常好的一篇文章,再能配上插图就更好了!
asp.net架构基础知识--httpmodule&HttpHandler -
sharp_lover:
struts的校验确实是比较费劲,jquery很强但是也有一些 ...
struts2实践- 结合jquery的纯客户端js表单校验 -
daquan198163:
commons-validator支持客户端、服务端双重验证, ...
struts2实践- 结合jquery的纯客户端js表单校验 -
chinaway:
按照楼主的配置,终于搞定。3q
struts2实践- 结合jquery的纯客户端js表单校验 -
yyjn12:
不论如何,客户端的js校验,可以完全取代服务器端的数据检验吗? ...
struts2实践- 结合jquery的纯客户端js表单校验
1.Handling File Uploads
2.HibernateAndSpringEnabledExecuteAndWaitInterceptor
3.How to validate field formats, such as a phone number
可以利用正则表达式实现
4.如何在jsp页面上访问session,request等对象中的属性
如下
struts2中所有的ognl的对象都默认暴露给jsp或者jstl标记库.
5.Value Stack Internals(值堆栈的内部实现机制)
Value本质上就是一个list
在value stack上调用[1]返回是的是从index 1开始的一个子列表,只有调用stack上的peek或者pop等方法才能返回实际stack中的实际对象.
举例如下,假设有一个列表包含了[model,action]
[0]返回CompoundRoot对象包含[model,action]
[1]返回CompoundRoot对象包含[action]
[0].toString()调用value stack上第一个存在toString()方法的对象.
[1].foo从调用从action stack上的第一个对象的getFoo()方法,
<ww:property value="[0].peek()"/>不会正常工作因为sturts2会把该方法翻译为从堆栈头部开始查找有peek()方法的第一个对象.
在struts2中栈中的对象有
* req - the current HttpServletRequest
* res - the current HttpServletResponse
* stack - the current OgnlValueStack
* ognl - an instance of OgnlTool
* ui - a (now deprecated) instance of a ui tag renderer
6.OGNL
OGNL规则
假设堆栈中有两个对象foo,bar,foo是堆栈root元素,要获取堆栈中的值可以用如下语法
#foo.blash
#bar.blash
blash-->foo.bash(由于foo是root元素所以foo和#前缀可以省略.
OGNL栈在struts的实现中处于是的栈的root元素
value stack上存储了很多对象,但是对与ognl来说它们看起来就像只有一个对象.
在root元素之外struts2还存储了其他的对象例如session,request等等的对象.
他们之中数值的访问必须加上#session,#request等等前缀.
实际的树状图如下
|
|--application
|
|--session
context map---|
|--value stack(root)
|
|--request
|
|--parameters
|
|--attr (searches page, request, session, then application scopes)
|
value stack中的对象有
action对象.
7.Collections (Maps, Lists, Sets)的创建和处理
list: {e1,e2,e3}
map: #{key1:value1,key2:value2}
判断集合中是否有某个元素
获取集合的子集
* ? - All elements matching the selection logic
* ^ - Only the first element matching the selection logic
* $ - Only the last element matching the selection logic
person.relatives.{? #this.gender == 'male'}
Lambda Expressions
上列语句中[]以内的部分为lambda表达式,#this表示函数的参数
8.在页面上显示action中的bean的值
如果需要显示多个bean的值
如果只需要显示单个的值
<webwork:property value="myBean.name" />
9.Tabular inputs(批量输入)
如果后台list中item的个数不确定的话可以使用XworkList来代替ArrayList.Xwork中get方法的源码如下
10.HTML form buttons HOWTO
[list]Determine Which Button Was Pressed(一个form多个button多个方法)
cookbook中列举的例子是利用每个button的name对应一个boolean的属性来解决.
但是在spring+struts的例子中看好像也可以通过如下方式实现
Dynamic Set of Buttons(列表中存在多个submit按钮每个按钮提交到对应的需要修改的对象)
前端
后台
提交到id将被提交到后台页面上作为key保留.
该技术可以用于提供批量保存的功能.
[/list]
- 采用FileUploadInterceptor实现文件上传操作.
- 定义struts.properties文件中的如下属性来实现一下参数的配置 struts.multipart.parser定义解析用户上传文件的库.
struts.multipart.saveDir定义用户上传文件保存的路径.
struts.multipart.maxSize指定上传文件的最大值设置.
2.HibernateAndSpringEnabledExecuteAndWaitInterceptor
- 该例子是对ExecuteAndWaitInterceptor的一个扩展
- 目的是为了让后台线程运行的时候可以获取到hibernate的session中的对象,感觉上和opensessioninview类似.
- 具体的实现类是OpenSessionExecuteAndWaitInterceptor
- 重新新的OpenSessionBackgroundProcess类以确保在后台线程执行的过程中,session始终不被关闭,以保证事务.
3.How to validate field formats, such as a phone number
可以利用正则表达式实现
<validators> <field name="phone"> <field-validator type="regex"> <param name="expression">\([\d][\d][\d]\) [\d][\d][\d]-[\d][\d][\d][\d]</param> <message>Phone number must be in the format (XXX) XXX-XXXX</message> </field-validator> </field>
4.如何在jsp页面上访问session,request等对象中的属性
如下
<s:property value="#application\['foo'\]"/> <s:property value="#session\['baz'\]"/>
struts2中所有的ognl的对象都默认暴露给jsp或者jstl标记库.
5.Value Stack Internals(值堆栈的内部实现机制)
Value本质上就是一个list
在value stack上调用[1]返回是的是从index 1开始的一个子列表,只有调用stack上的peek或者pop等方法才能返回实际stack中的实际对象.
举例如下,假设有一个列表包含了[model,action]
[0]返回CompoundRoot对象包含[model,action]
[1]返回CompoundRoot对象包含[action]
[0].toString()调用value stack上第一个存在toString()方法的对象.
[1].foo从调用从action stack上的第一个对象的getFoo()方法,
<ww:property value="[0].peek()"/>不会正常工作因为sturts2会把该方法翻译为从堆栈头部开始查找有peek()方法的第一个对象.
在struts2中栈中的对象有
* req - the current HttpServletRequest
* res - the current HttpServletResponse
* stack - the current OgnlValueStack
* ognl - an instance of OgnlTool
* ui - a (now deprecated) instance of a ui tag renderer
6.OGNL
OGNL规则
假设堆栈中有两个对象foo,bar,foo是堆栈root元素,要获取堆栈中的值可以用如下语法
#foo.blash
#bar.blash
blash-->foo.bash(由于foo是root元素所以foo和#前缀可以省略.
OGNL栈在struts的实现中处于是的栈的root元素
value stack上存储了很多对象,但是对与ognl来说它们看起来就像只有一个对象.
在root元素之外struts2还存储了其他的对象例如session,request等等的对象.
他们之中数值的访问必须加上#session,#request等等前缀.
实际的树状图如下
|
|--application
|
|--session
context map---|
|--value stack(root)
|
|--request
|
|--parameters
|
|--attr (searches page, request, session, then application scopes)
|
value stack中的对象有
action对象.
7.Collections (Maps, Lists, Sets)的创建和处理
list: {e1,e2,e3}
map: #{key1:value1,key2:value2}
判断集合中是否有某个元素
<s:if test="'foo' in {'foo','bar'}"> muhahaha </s:if> <s:else> boo </s:else> <s:if test="'foo' not in {'foo','bar'}"> muhahaha </s:if> <s:else> boo </s:else>
获取集合的子集
* ? - All elements matching the selection logic
* ^ - Only the first element matching the selection logic
* $ - Only the last element matching the selection logic
person.relatives.{? #this.gender == 'male'}
Lambda Expressions
<s:property value="#fib =:[#this==0 ? 0 : #this==1 ? 1 : #fib(#this-2)+#fib(#this-1)], #fib(11)" />
上列语句中[]以内的部分为lambda表达式,#this表示函数的参数
8.在页面上显示action中的bean的值
如果需要显示多个bean的值
<webwork:property value="myBean"> <!- This will call getName() on your TestBean and print it to the page --> The name is: <webwork:property value="name"/> </webwork:property>
如果只需要显示单个的值
<webwork:property value="myBean.name" />
9.Tabular inputs(批量输入)
<s:iterator value="cart.items" status="rowstatus"> <s:hidden name="cart.items[%{#rowstatus.index}].productId" value="%{productId}"> <s:textfield name="cart.items[%{#rowstatus.index}].qty" value="%{qty}" /> <s:textfield name="cart.items[%{#rowstatus.index}].note" value="%{note}" /> </s:iterator>
如果后台list中item的个数不确定的话可以使用XworkList来代替ArrayList.Xwork中get方法的源码如下
while (index >= this.size()) { try { //todo this.add(objectFactory.buildBean(clazz, null)); //ActionContext.getContext().getContextMap())); } catch (Exception e) { throw new XWorkException(e); } } return super.get(index);
10.HTML form buttons HOWTO
[list]
但是在spring+struts的例子中看好像也可以通过如下方式实现
<s:submit value="%{getText('button.label.cancel')}" name="redirect-action:index"/>
<form action="UpdateCart.action"> <s:iterate value="items"> <s:property value="name"> <input type="submit" name="delete[<s:property value='id'>]" value="delete" /> <br/> </s:iterate> </form>
后台
private Map delete = new HashMap();
提交到id将被提交到后台页面上作为key保留.
该技术可以用于提供批量保存的功能.
发表评论
-
struts2实践-文件上传以及图片文件width,length的检查(未完成版)
2008-04-15 14:48 0先定个题目等完成了再发布. -
Struts2 Architects Guide-Big Picture
2008-03-27 16:53 1354简要处理流程 HttpRequest-->ActionC ... -
Struts2 Core Developers Guide-FAQ
2008-03-27 11:13 16671.What are the fundamental diff ... -
Struts2 Core Developers Guide-Type Conversion
2008-03-25 16:50 20261.Overview 类型转化在strut ... -
Struts2 Core Developers Guide-Localization
2008-03-25 16:48 21931.Overview 支持国际化的 ... -
Struts2 Core Developers Guide-Validation
2008-03-25 16:20 35731.Using Annotations(利用java5的标记实 ... -
Struts2 Core Developers Guide-PreResultListener
2008-03-25 10:12 23321.主要功能&触发时间 该监听器主要在action的e ... -
Struts2 Core Developers Guide-DispatcherListener
2008-03-25 10:01 13971.主要功能 在Dispatcher对象init或者destr ... -
Struts2 Core Developers Guide-Result Types
2008-03-24 22:14 14801.总览 action负责applicate ... -
Struts2 Core Developers Guide-Action Chaining
2008-03-24 22:07 11381.顾名思义,该功能的主要目的是执行一连串的action方法, ... -
Struts Core Developers Guide-Writing Interceptors
2008-03-24 17:33 9081.实现Interceptor interface接口 该接口 ... -
Struts Core Developers Guide-Framework Interceptor
2008-03-24 16:50 1507Alias Interceptor 用于在A ... -
Struts2 Core Developers-Interceptors
2008-03-21 15:42 8581.Understanding Interceptors(理解 ... -
Struts2 Core Developers Guide-Configuration
2008-03-21 11:34 18261.最初也是最终的理想Zero Configuration 目 ... -
Struts2 Core Developers Guide-Develop with struts
2008-03-21 10:45 10071.Ajax集成 struts2集成了对Ajax处理的支持,只 ... -
Struts2 Core Developers Guide-Nutshell(概要)
2008-03-21 10:22 917Architecture in a Nutshell(架构概要 ... -
Struts2 Core Developers Guide-tutorial
2008-03-20 10:17 10191.Dependency of struts2 struts2 ...
相关推荐
Chapter 9, Angular 2 Testing, will guide you through both how to set up test suites for Angular 2 as well as how to write various types of tests for these suites. Many developers avoid testing when ...
《ARM System Developers Guide - Designing and Optimizing System Software》是一本深入探讨ARM处理器系统软件设计与优化的专业书籍,由Andrew N. Sloss、Dominic Symes、Chris Wright和John Rayfield四位在ARM...
标题《qgroundcontrol-developers-guide-en》表明本篇指南是关于qgroundcontrol(简称QGC)的开发者使用说明,QGC是地面站控制软件,其主要功能是为PX4飞控系统进行配置。 描述中提到,这份开发者指南解释了QGC软件...
《Oracle Database 应用开发者指南:基础篇 10g Release 2(10.2)》是一份详尽的文档,旨在为那些希望利用Oracle数据库进行应用开发的专业人士提供全面的技术指导。此文档由Oracle公司发布,版本号为B14251-01,...
《Java Cookbook: Problems and Solutions for Java Developers》第四版是一本深受程序员欢迎的Java技术参考书。这本书由知名作者编写,旨在解决Java开发过程中遇到的实际问题,并提供高效、实用的解决方案。2020年...
SIP2开发者指南 3M Standard Interchange Protocol V2.00 3M™ SelfCheck™ system SIP2 Interface Developer’s Guide
这个是ERSI官方文档,绝对权威,绝对经典。AO开发必读。
2. **脚本语言与编程**:ACT主要基于Python语言进行开发,因此熟悉Python语法是必要的。指南会介绍如何使用Python编写ACT脚本,实现对Workbench模型的操作和定制化功能。 3. **ACT组件开发**:学习如何创建自定义的...
这个是ERSI官方文档,绝对权威,绝对经典。AO开发必读。
Developers guide to ASP.NET
本指南将围绕“VxWorks Device Driver Developers Guide Vol”展开,深入解析驱动编程的核心概念和技术。 首先,VxWorks设备驱动的开发主要涉及三个卷: 1. **Vol1_6.6**: 这部分通常涵盖驱动程序的基础知识,包括...
标题:“Apache_CloudStack-4.3.0-Developers_Guide-en-US” 指明了文件的名称,这是一个针对开发者指南的文档,专为Apache CloudStack 4.3.0版本编写。 描述:“Apache_CloudStack-4.3.0-Developers_Guide-en-US....
Tosi -- Matplotlib for Python Developers -- 2009 -- code.7z
Nandi -- Spark for Python Developers -- 2015 -- code.7z
2-day-developers-guide.pdf
1. 文档标题为“json-developers-guide.pdf”,并特别指出是“oracle 19c json开发指南”。这说明文档是针对Oracle数据库19c版本下使用JSON数据格式进行开发的官方指南。Oracle 19c是一个企业级数据库版本,其对JSON...
名称:daily.dev Where developers gro ---------------------------------------- 版本:3.28.2 作者:https://daily.dev/ 分类:开发者工具 ---------------------------------------- 概述:获取为您量身定制的最...
该压缩包包含的文件“win95-a-developers-guide”很可能是本书的电子版,可能包括PDF文档、源代码示例或其他相关资源。 Windows 95是微软发布的一款具有里程碑意义的操作系统,它引入了全新的图形用户界面和多任务...