- 浏览: 1529561 次
- 性别:
- 来自: 厦门
文章分类
- 全部博客 (516)
- Java (49)
- Java/Struts 2.0 (25)
- Java/Spring、Spring MVC (11)
- Java/Quartz (3)
- Java/Lucene (6)
- Java/Hibernate (19)
- Java/openJPA (7)
- Java/DWR (7)
- Java/Security、Spring Security/OAuth2 (6)
- Java/Threading (9)
- Java/XML (22)
- java/design pattern (4)
- Android (2)
- JavaScript (46)
- jquery (3)
- DB/MySQL (23)
- DB/Oracle (16)
- PHP (25)
- CSS (20)
- Linux (38)
- C/C++、DLL、Makefile、VC++ (31)
- 正则 (9)
- Eclipse (4)
- 安全、网络等概念 (25)
- 集群 (7)
- 网页 (5)
- 视频\音频 (1)
- HTML (6)
- 计算机数学/算法 (3)
- Virtualbox (1)
- LDAP (2)
- 数据挖掘 (6)
- 工具破解 (1)
- 其他 (13)
- Mail (1)
- 药材 (3)
- 游戏 (2)
- hadoop (13)
- 压力测试 (3)
- 设计模式 (3)
- java/Swing (2)
- 缓存/Memcache (0)
- 缓存/Redis (1)
- OSGI (2)
- OSGI/Gemini (0)
- 文档写作 (0)
- java/Servlet (3)
- MQ/RabbitMQ (2)
- MQ/RocketMQ (0)
- MQ/Kafka (1)
- maven (0)
- SYS/linux (1)
- cache/redis (1)
- DB/Mongodb (2)
- nginx (1)
- postman (1)
- 操作系统/ubuntu (1)
- golang (1)
- dubbo (1)
- 技术管理岗位 (0)
- mybatis-plus (0)
最新评论
-
pgx89112:
大神,请赐我一份这个示例的项目代码吧,万分感谢,1530259 ...
spring的rabbitmq配置 -
string2020:
不使用增强器 怎么弄?
OpenJPA的增强器 -
孟江波:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!4 ...
spring的rabbitmq配置 -
eachgray:
...
spring-data-redis配置事务 -
qljoeli:
学习了,楼主,能否提供一份源代码啊,学习一下,十分感谢!!!1 ...
spring的rabbitmq配置
项目中采用struts2.0时,常常使用计算表单式的处理源码原理解析:
例如:
<s:set var="hasDeductAmount" value =" %{bill.supplier.moneyPool>#amount?#amount:bill.supplier.moneyPool}"> </s:set>
上面的绿色为:value中值的表达式表示的值栈表达式为:去除%{}的表达式
bill.supplier.moneyPool>#amount?#amount:bill.supplier.moneyPool
备注: (1)原理看下面的源代码即可理解:
(2)#表示OGNL的表达式
<input name="billCon.amount" type="text" class="inputbg" value="<s:property value='#hasDeductAmount'/>" />
Struts2.0中的每一个标签的都是以组件形式展示:
Component源代码如下:
/** * Finds a value from the OGNL stack based on the given expression. * Will always evaluate <code>expr</code> against stack except when <code>expr</code> * is null. If altsyntax (%{...}) is applied, simply strip it off. * * @param expr the expression. Returns <tt>null</tt> if expr is null. * @return the value, <tt>null</tt> if not found. */ protected Object findValue(String expr) { if (expr == null) { return null; } //获取OGNL的表达式 expr = stripExpressionIfAltSyntax(expr); //从值栈获取表达式的数据对象 return getStack().findValue(expr, throwExceptionOnELFailure); } /** * If altsyntax (%{...}) is applied, simply strip the "%{" and "}" off. * @param expr the expression (must be not null) * @return the stripped expression if altSyntax is enabled. Otherwise * the parameter expression is returned as is. */ protected String stripExpressionIfAltSyntax(String expr) { return stripExpressionIfAltSyntax(stack, expr); } /** * If altsyntax (%{...}) is applied, simply strip the "%{" and "}" off. * @param stack the ValueStack where the context value is searched for. * @param expr the expression (must be not null) * @return the stripped expression if altSyntax is enabled. Otherwise * the parameter expression is returned as is. */ public static String stripExpressionIfAltSyntax(ValueStack stack, String expr) { if (altSyntax(stack)) { // does the expression start with %{ and end with }? if so, just cut it off! if (expr.startsWith("%{") && expr.endsWith("}")) { return expr.substring(2, expr.length() - 1); } } return expr; }
转自:http://topmanopensource.iteye.com/blog/570022
HTML标签的属性可以被赋值为一个静态的值或一个OGNL表达式。如果你在赋值时使用了一个OGNL表达式并把它用"%{"和"}"括了起来,这个表达式将会被求值。
比如,
1、下面的label属性将被赋值字符串“useName”:
label="useName"
2、而下面这个表达式使用了一个OGNL表达式userName,label属性的值将等于某一个动作类中的userName属性值:
label="%{useName}"
3、下面这个表达式将把label属性赋值为会话属性userName的值:
label="%{#session.userName}"
4、这个value属性将被赋值为6:
value="%{1 + 5}"
发表评论
-
Struts2 (Json) + jQuery 组合的简单用法
2011-03-01 23:02 10381、将struts2的json插件加入web工程的lib,js ... -
Struts2中$,#,%的区别
2011-03-01 22:57 1386转自:http://hi.baidu.com/di ... -
<s:generator>
2011-02-27 21:54 1431<s:generator val="%{'aa ... -
<s:merge>
2011-02-27 21:45 896<s:set var="americanCar ... -
<s:append>
2011-02-27 21:44 1257<s:set var="list1" ... -
<s:iterator>
2011-02-27 21:01 1400属性名称 必填项 默认值 ... -
<s:bean>
2011-02-27 18:32 958public class DegreeConverter { ... -
<s:param>
2011-02-27 18:21 3611param标签用来把一个参数传递给包含着它的那个标签。 不管 ... -
updownselect
2011-02-27 16:24 1408<s:updownselect name="c ... -
combobox
2011-02-27 16:08 966<s:combobox name="combo ... -
checkboxlist
2011-02-27 12:15 898ddd public class LoginAction ... -
select optgroup
2011-02-27 11:58 724代码片段: public class LoginAction ... -
select标签
2011-02-23 21:17 1029import com.opensymphony.xwork2. ... -
radio标签
2011-02-23 21:13 1017import java.util.SortedMap; ... -
list、listkey、listValue属性
2011-02-22 21:07 7259list、listKey、listValue属性对 ... -
Ongl 与 ValueStack ActionContext
2011-01-09 21:03 1481转自:http://blog.sina.com.c ... -
struts2.0的ognl表达式研究
2011-01-09 21:02 1043OGNL —— 完美的催化剂 为了解决数据从V ... -
struts2 tags
2010-01-08 13:22 12351.<s:property> propert ... -
Struts2和Freemarker整合应用批量静态页面的生成
2009-11-07 23:19 3870利用Struts2生成静态页面其实很灵活,很强大,尤其是利用S ... -
导致"ERROR - Could not find action or result"的可能原因。
2009-10-08 10:51 2171在某些情况Struts 2.x的一些错误消息提示让人看得琢磨不 ...
相关推荐
Struts 2.0 采用了 MVC(Model-View-Controller)设计模式,将数据模型、用户界面以及业务逻辑分开处理,使得应用程序结构清晰、易于维护。 1. **什么是 Struts 2?** - Struts 2 结合了 JSP 和 Servlet 技术。 -...
这个压缩包文件包含了关于Struts2.0的经典书籍、源码以及标签的学习资源,对于想要深入理解和使用Struts2.0的人来说,是一份非常宝贵的资料。 首先,让我们从"经典书籍"入手。Struts2.0的书籍通常会涵盖以下知识点...
通过深入研究这个Struts2.0的源代码,你可以更好地理解其工作原理,学习如何有效地利用它的特性来构建高效、健壮的Web应用。同时,这也有助于你了解如何将Struts2与其他技术(如Spring、Hibernate等)整合,构建更...
Struts2.0是Java Web开发中非常重要的一个框架,它是Apache软件基金会的Jakarta项目下的产品,主要用于构建MVC(Model-View-Controller)架构的Web应用。本教程将全面解析Struts2.0的核心概念、配置以及实战技巧。 ...
"Struts2.0中文教程.zip"可能是一系列的教程集合,包含了Struts2.0的进阶主题,如动态方法调用(Dynamic Method Invocation,DMI)、OGNL(Object-Graph Navigation Language)表达式语言的使用、异常处理机制、国际...
5. **标签库**:Struts2.0提供了丰富的标签库,如s:form、s:textfield、s:select等,用于在JSP页面中快速构建UI。手册会介绍这些标签的用法和应用场景。 6. **国际化(i18n)与主题(Theme)**:如何配置和使用...
Struts2.0是Java企业级开发中广泛使用的MVC框架,它是在Struts1.x的基础上发展起来的,旨在提供更强大的功能、更好的性能和更灵活的架构。本教程全面覆盖了Struts2.0的核心概念和技术,为初学者和进阶开发者提供了...
首先,Struts2.0采用拦截器(Interceptor)机制来处理请求,使得业务逻辑与控制逻辑分离,更易于维护。拦截器堆栈允许开发者自定义拦截器,实现如事务管理、权限验证等功能。 在Struts2.0中,Action是处理用户请求...
Struts2.0文件上传原理主要涉及Web应用中处理用户上传文件的功能,这一过程涉及到多个步骤和技术,包括HTTP协议、Multipart/form-data编码、临时文件存储以及后台处理。以下是对Struts2.0文件上传原理的详细解释: ...
在深入学习Struts2.0的过程中,你还会接触到更多高级概念,如OGNL表达式、拦截器链、主题与模板、国际化、异常处理、表单验证等。这些知识点将帮助你构建更复杂的业务逻辑和用户界面,提高开发效率和代码质量。 ...
通过运行这个文件,你可以动手操作,理解每一个组件的工作原理,并逐步掌握Struts2.0的开发流程。 总的来说,Struts2.0教程是Java Web开发者进阶的重要参考资料,通过学习,你不仅可以掌握MVC框架的设计模式,还能...
Struts2.0使用这样的写法来处理请求。 然后,编写Action类,它是一个Java类,与传统的JavaBean类似,但有一个关键的区别:它包含一个名为`execute()`的方法,该方法抛出异常并返回一个字符串,如`"success"`,表示...
总之,Struts2.0的`checkbox`标签提供了一种强大且灵活的方式来处理Web表单中的复选框。在实际开发中,我们需要理解其工作原理,正确设置属性,并结合数据库操作,以实现用户友好的交互。同时,合理地运用Struts2的...
通过这个简单的"Struts2.0登陆验证代码",初学者可以了解Struts2.0的基本架构和工作原理,为后续深入学习和实践打下基础。同时,这也是一个很好的起点,可以在此基础上添加更多的功能,如连接数据库进行真实用户验证...
《Struts2.0深入浅出》一书详尽阐述了Struts2.0框架的原理、特性和最佳实践,是面向对Java Web开发感兴趣或正在从事相关工作的开发者的重要资源。Struts2.0作为第二代Struts框架,相较于其前身,引入了诸多改进和新...
Struts2.0是一款强大的Java Web应用程序框架,它在企业级开发中被广泛采用,用于构建基于MVC(Model-View-Controller)模式的Web应用。这个框架以其灵活性、可扩展性和良好的社区支持而著名。Struts2.0中英文帮助...