- 浏览: 84901 次
- 性别:
- 来自: 福建福州
文章分类
最新评论
-
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.What are the fundamental differences between Struts and JSF
Specifically, JSF is a "component" framework whereas Struts is an "action" framework.
总的来说,JSF,asp.net这种框架采用的是一种,类似于cs架构中的组件式,基于组建事件的编程风格.
而struts事基于action的框架,这里的action对于http来说应该可以理解为url,或者说是REST中的资源路径.
2.如何在页面上直接从流中显示图片.
faq中居然自己写了一个MyActionResult类实现,一看日期居然是2006-7-22,好像在struts2中可以直接通过streamresult指定contenttype为image/jpeg,image/gif来实现了.
3.How can we return a text string as the response
faq中描述可以利用streamresult在stream中加入text信息来解决.但是这个给人感觉比较奇怪.\
4.How can we test applications?
原则,尽量把一些业务逻辑代码移到facade层中,保持action类中的代码量尽量少这样就可以通过测试,facade来覆盖大部分的系统功能.
另外faq中推荐了一种Selenium工具来进行UI测试.
5.How can we test Actions
直接创建并且调用action对象的方法.
通过ActionProxyFactory包装后调用,这样可以调用测试拦截器和result的运行结果是否正确.
6.如何处理文件上传的请求.
建议的方式是采用fileuploadinterceptor,可以实现多文件上传功能
代码如下
7.How can we force the Action Mappings (struts.xml) to reload
devMode=true或者struts.configuration.xml.reload=true
8.如何分割struts配置文件
可以加载单个jar文件中的struts.xml配置文件.
9.Parameters in configuration results
result中的location属性支持ognl表达式,所以可以通过其实现结果的参数化.
不过需要对应的action方法中有getId和getRedirectURL方法.
10.运行时获取session
Map attibutes = ActionContext.getContext().getSession();
或者实现SessionAware并且加入servlet-config拦截器.
11.运行时获取request
HttpServletRequest request = ServletActionContext.getRequest();
或者实现ServletRequestAware并且加入servlet-config拦截器.
12.运行时获取response
HttpServletResponse response = ServletActionContext.getResponse()
或者实现ServletResponseAware并且加入servlet-config拦截器.
13.获取提交的request parameters
Map parameters = ActionContext.getContext().getParameters();
实现ParameterAware并且加入servlet-config拦截器.
14.访问action配置中定义的参数
直接在action中定义对应action中参数名的settermethod,或者定义setParams(Map)来实现.
15.Can we access an Action's Result
Map resultsMap = invocation.getProxy().getConfig().getResults();
16.How do I obtain security details (JAAS)
从request中获取
实现PrincipalAware并且加入servlet-config拦截器
通过调用PrincipalProxy的同名方法实现.
17.如何改变页面的主题(theme)
<saf:set name="theme" value="simple" scope="page" />
由于value支持ognl所以也可以写成
<saf:set name="theme" value="%{myTheme}" scope="page" />
18.Why isn't our Prepare interceptor being executed
Prepare 拦截器最好在validation拦截器之前,否则可能被打断.
19.Why doesn't my setter get called ?
getter和setter操作的数据类型必须一直,否则ognl会忽略.
20.How do we repopulate controls when validation fails
faq中提示采用preparable接口和action标记实现,但是感觉ConversionErrorInterceptor也可以实现相同的功能
21.如何测试校验信息
22.为什么使用CDATA时有些消息会被忽略.
确保<![CDATA[ 后没有空格.
23.如何改变页面的locale
24.如何定义全局properties文件
struts.custom.i18n.resources=global-messages, image-messages
25.How do I add I18N to a UI tag, like the textfield tag
如何为普通的标记添加i18n的getText支持.
修改controlheader模板
26.Can I add I18N outside the Action's context
可以通过如下的标签来实现对应的properties文件的加载以便在为调用action的情况下使用resource bundle.
27.How to escape special chars in resource bundles
如何在resource文件中转义特殊字符
28.How do I change the invalid input error message for a particular field
如何修改某个字段的错误信息
invalid.fieldvalue.user.dob=Please enter Date of Birth in the correct format.
29.为jsp页面添加jsp标签的支持
在web.xml中添加如下定义
30.Can an action tag run another method apart from the default execute method
可以采用action别名来实现该需求.
Specifically, JSF is a "component" framework whereas Struts is an "action" framework.
总的来说,JSF,asp.net这种框架采用的是一种,类似于cs架构中的组件式,基于组建事件的编程风格.
而struts事基于action的框架,这里的action对于http来说应该可以理解为url,或者说是REST中的资源路径.
2.如何在页面上直接从流中显示图片.
faq中居然自己写了一个MyActionResult类实现,一看日期居然是2006-7-22,好像在struts2中可以直接通过streamresult指定contenttype为image/jpeg,image/gif来实现了.
3.How can we return a text string as the response
faq中描述可以利用streamresult在stream中加入text信息来解决.但是这个给人感觉比较奇怪.\
4.How can we test applications?
原则,尽量把一些业务逻辑代码移到facade层中,保持action类中的代码量尽量少这样就可以通过测试,facade来覆盖大部分的系统功能.
另外faq中推荐了一种Selenium工具来进行UI测试.
5.How can we test Actions
直接创建并且调用action对象的方法.
通过ActionProxyFactory包装后调用,这样可以调用测试拦截器和result的运行结果是否正确.
6.如何处理文件上传的请求.
建议的方式是采用fileuploadinterceptor,可以实现多文件上传功能
代码如下
<form name="myForm" enctype="multipart/form-data"> <input type="file" name="myDoc" value="Browse File A ..." /> <input type="file" name="myDoc" value="Browse File B ..." /> <input type="file" name="myDoc" value="Browse File C ..." /> <input type="submit" /> </form> public void setMyDoc(File[] myDocs) public void setMyDocContentType(String[] contentTypes) public void setMyDocFileName(String[] fileNames)
7.How can we force the Action Mappings (struts.xml) to reload
devMode=true或者struts.configuration.xml.reload=true
8.如何分割struts配置文件
<struts> <include file="struts-default.xml"/> <include file="config-browser.xml"/> <package name="default" extends="struts-default"> .... </package> <include file="other.xml"/> </struts>
可以加载单个jar文件中的struts.xml配置文件.
9.Parameters in configuration results
result中的location属性支持ognl表达式,所以可以通过其实现结果的参数化.
<struts> .... <package name="somePackage" namespace="/myNamespace" extends="struts-default"> <action name="myAction" class="com.project.MyAction"> <result name="success" type="redirectAction">otherAction?id=${id}</result> <result name="back" type="redirect">${redirectURL}</result> </action> <action name="otherAction" class="com.project.MyOtherAction"> ... </action> </package> .... </struts>
不过需要对应的action方法中有getId和getRedirectURL方法.
10.运行时获取session
Map attibutes = ActionContext.getContext().getSession();
或者实现SessionAware并且加入servlet-config拦截器.
11.运行时获取request
HttpServletRequest request = ServletActionContext.getRequest();
或者实现ServletRequestAware并且加入servlet-config拦截器.
12.运行时获取response
HttpServletResponse response = ServletActionContext.getResponse()
或者实现ServletResponseAware并且加入servlet-config拦截器.
13.获取提交的request parameters
Map parameters = ActionContext.getContext().getParameters();
实现ParameterAware并且加入servlet-config拦截器.
14.访问action配置中定义的参数
直接在action中定义对应action中参数名的settermethod,或者定义setParams(Map)来实现.
15.Can we access an Action's Result
Map resultsMap = invocation.getProxy().getConfig().getResults();
16.How do I obtain security details (JAAS)
从request中获取
HttpServletRequest request = ServletActionContext.getRequest(); String authType = request.getAuthType(); // http or https String user = request.getRemoteUser(); // the user principal (in string) Principalprincipal = request.getUserPrincipal(); // get a Principal object bool isAuth = request.isUserInRole("patrick");
实现PrincipalAware并且加入servlet-config拦截器
通过调用PrincipalProxy的同名方法实现.
17.如何改变页面的主题(theme)
<saf:set name="theme" value="simple" scope="page" />
由于value支持ognl所以也可以写成
<saf:set name="theme" value="%{myTheme}" scope="page" />
18.Why isn't our Prepare interceptor being executed
Prepare 拦截器最好在validation拦截器之前,否则可能被打断.
19.Why doesn't my setter get called ?
getter和setter操作的数据类型必须一直,否则ognl会忽略.
20.How do we repopulate controls when validation fails
faq中提示采用preparable接口和action标记实现,但是感觉ConversionErrorInterceptor也可以实现相同的功能
21.如何测试校验信息
public class WebLoginActionTest extends TestCase { private WebLoginAction wla; protected void setUp() throws Exception { wla = new WebLoginAction(); wla.setJ_username(""); wla.setJ_password(null); super.setUp(); } public void testWebLoginActionValidation() throws ValidationException { ActionValidatorManager avm = ActionValidatorManagerFactory.getInstance(); avm.validate(wla,""); Map fieldErrors = wla.getFieldErrors(); assertTrue(wla.hasErrors()); assertEquals(2, fieldErrors.size()); assertTrue(fieldErrors.containsKey("j_username")); assertTrue(fieldErrors.containsKey("j_password")); System.out.println("[errors] : " + fieldErrors.toString()); } }
22.为什么使用CDATA时有些消息会被忽略.
确保<![CDATA[ 后没有空格.
23.如何改变页面的locale
- 可以通过requst_locale参数传递
- 可以通过action的setLocale方法实现
24.如何定义全局properties文件
struts.custom.i18n.resources=global-messages, image-messages
25.How do I add I18N to a UI tag, like the textfield tag
如何为普通的标记添加i18n的getText支持.
修改controlheader模板
${parameters.label?html}:<#t/> <#assign mm="getText('"+parameters.label?html+"')" /><#t/> ${stack.findValue(mm)}:<#t/> or ${stack.findValue("getText('"+parameters.label?html+"')")} After making the change, tags with a label attribute will use the value you set as a key. <saf:textfield label="label.firstName" name="firstName" />
26.Can I add I18N outside the Action's context
可以通过如下的标签来实现对应的properties文件的加载以便在为调用action的情况下使用resource bundle.
<p><saf:i18n name="alternate"> <img src="<saf:text name="action.logo.path"/>" alt="<saf:text name="action.logo.alt"/>"/> </saf:i18n></p>
27.How to escape special chars in resource bundles
如何在resource文件中转义特殊字符
The special chars \', { and }: escape ' with another ' '' (double-single quote) escape \ with another \ \\ (double backslash) enclose } with ' '}' enclose { with ' '{'
28.How do I change the invalid input error message for a particular field
如何修改某个字段的错误信息
invalid.fieldvalue.user.dob=Please enter Date of Birth in the correct format.
29.为jsp页面添加jsp标签的支持
在web.xml中添加如下定义
<servlet> <servlet-name>jspSupportServlet</servlet-name> <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class> <load-on-startup>10</load-on-startup> </servlet>
30.Can an action tag run another method apart from the default execute method
可以采用action别名来实现该需求.
发表评论
-
struts2实践-文件上传以及图片文件width,length的检查(未完成版)
2008-04-15 14:48 0先定个题目等完成了再发布. -
Struts2 Architects Guide-Big Picture
2008-03-27 16:53 1355简要处理流程 HttpRequest-->ActionC ... -
Struts2 Core Developers Guide-Cookbook
2008-03-27 16:12 18781.Handling File Uploads 采用 ... -
Struts2 Core Developers Guide-Type Conversion
2008-03-25 16:50 20271.Overview 类型转化在strut ... -
Struts2 Core Developers Guide-Localization
2008-03-25 16:48 21951.Overview 支持国际化的 ... -
Struts2 Core Developers Guide-Validation
2008-03-25 16:20 35741.Using Annotations(利用java5的标记实 ... -
Struts2 Core Developers Guide-PreResultListener
2008-03-25 10:12 23331.主要功能&触发时间 该监听器主要在action的e ... -
Struts2 Core Developers Guide-DispatcherListener
2008-03-25 10:01 13991.主要功能 在Dispatcher对象init或者destr ... -
Struts2 Core Developers Guide-Result Types
2008-03-24 22:14 14811.总览 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 9091.实现Interceptor interface接口 该接口 ... -
Struts Core Developers Guide-Framework Interceptor
2008-03-24 16:50 1509Alias Interceptor 用于在A ... -
Struts2 Core Developers-Interceptors
2008-03-21 15:42 8591.Understanding Interceptors(理解 ... -
Struts2 Core Developers Guide-Configuration
2008-03-21 11:34 18271.最初也是最终的理想Zero Configuration 目 ... -
Struts2 Core Developers Guide-Develop with struts
2008-03-21 10:45 10081.Ajax集成 struts2集成了对Ajax处理的支持,只 ... -
Struts2 Core Developers Guide-Nutshell(概要)
2008-03-21 10:22 918Architecture in a Nutshell(架构概要 ... -
Struts2 Core Developers Guide-tutorial
2008-03-20 10:17 10201.Dependency of struts2 struts2 ...
相关推荐
标题《qgroundcontrol-developers-guide-en》表明本篇指南是关于qgroundcontrol(简称QGC)的开发者使用说明,QGC是地面站控制软件,其主要功能是为PX4飞控系统进行配置。 描述中提到,这份开发者指南解释了QGC软件...
《ARM System Developers Guide - Designing and Optimizing System Software》是一本深入探讨ARM处理器系统软件设计与优化的专业书籍,由Andrew N. Sloss、Dominic Symes、Chris Wright和John Rayfield四位在ARM...
《Oracle Database 应用开发者指南:基础篇 10g Release 2(10.2)》是一份详尽的文档,旨在为那些希望利用Oracle数据库进行应用开发的专业人士提供全面的技术指导。此文档由Oracle公司发布,版本号为B14251-01,...
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组件开发**:学习如何创建自定义的...
Developers guide to ASP.NET
这个是ERSI官方文档,绝对权威,绝对经典。AO开发必读。
本指南将围绕“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...
该压缩包包含的文件“win95-a-developers-guide”很可能是本书的电子版,可能包括PDF文档、源代码示例或其他相关资源。 Windows 95是微软发布的一款具有里程碑意义的操作系统,它引入了全新的图形用户界面和多任务...
名称:daily.dev Where developers gro ---------------------------------------- 版本:3.28.2 作者:https://daily.dev/ 分类:开发者工具 ---------------------------------------- 概述:获取为您量身定制的最...
Struts、Spring和Hibernate是Java Web开发中的三大框架,它们的整合使用,通常被称为SSH(Struts2、Spring4、Hibernate5)框架集成。SSH整合能够实现MVC设计模式,提供松耦合、高可扩展性的应用解决方案。下面将详细...
MediaTek LinkIt Smart 7688 Developers Guide v_0.92-1 是一份针对MediaTek LinkIt Smart 7688开发平台的技术指南,适用于那些希望深入了解该平台并进行开发的工程师或爱好者。这份文档是英文版,为那些喜欢阅读...
·增加的多核处理器支持,包括Intel@ Core i7处理器、ARM MPCore and Cortex A9处理器、FreescaleQorIQ P2020处理器、Cavium 54xx/55xx/56xx/57xx/58xx系列处理器和RMI XLR/XLS系列处理器等,使客户能够根据他们...
《Kotlin for Android Developers》中文版是一本专为Android开发者准备的Kotlin编程语言指南。这本书深入浅出地介绍了Kotlin这一现代、简洁且强大的编程语言,旨在帮助开发者快速掌握Kotlin并将其应用到Android应用...