logic:present 和 logic:empty他们的用法大致相同,唯一的不同点是:两者在对空字符串的处理上存在着不同。
下面为index.jsp中的代码:
1 <logic:notPresent name="users">
2 notpresent
3 </logic:notPresent>
4 <logic:notEmpty name="users">
5 notempty
6 </logic:notEmpty>
7 <logic:empty name="users">
8 empty
9 </logic:empty>
10 <logic:present name="users">
11 present
12 </logic:present>
当第一次访问该JSP的时候,由于users没有定义,并且也不在page,request,session,application任何一个作用域中,因此输出的结果为notpresent,empty。
下面我们增加一个action,让他在index.jsp之前执行,然后再跳转到index.jsp中,同时在该action的execute方法中增加如下代码:
1String userName = "";
2request.setAttribute("users", userName);
3return new ActionForward("/index.jsp");
4这里将userName保存在request中,key为users,再将请求转发至index.jsp中,但是userName的值为一个空字符串,转发过后,输出的值为:empty,present
这里我们再做一次改动,将action的execute方法中的代码改为:
1String userName = null;
2request.setAttribute("users", userName);
3return new ActionForward("/hello.jsp");
4不同的是userName 不再为空字符串了,而是null值,当转发至index.jsp后,输出的值为:notpresent,empty 。
对比这几次改动,我们可以得出结论:
对于没有在page,request,session,application中定义或者是没有分配内存空间(null值)的变量,这两个标记处理的方法是一致的,都会认为此变量不存在(notpresent)或者为空(empty)。而对于空字符串""值,他们的处理就不一样了,logic:present 标记认为空字符串仍然是存在的,也就是说,只要是引用了一块内存空间的变量,logic:present 就会返回present ;而logic:empty则认为空字符串仍然为空,由此得出,在logic:empty看来,变量不仅仅要引用一块内存空间,而且该地址空间的值不能为空字符串,否则都认为该变量为空,都会返回empty
分享到:
相关推荐
Sturts2课程说明:各种配置内容详解
在本示例中,"Sturts2.rar"可能包含了一个演示如何使用Struts2实现文件上传功能的项目。文件上传是Web应用中常见的需求,它允许用户上传文件到服务器。 在Struts2中,处理文件上传主要依赖于Apache Commons ...
2. **Iterate Tag**:如`<s:iterator>`用于遍历集合,常用于数据显示和数据操作,支持索引和迭代器变量。 3. **If-Else Tag**:`<s:if>`和`<s:else>`用于条件判断,可以根据表达式的值执行不同的逻辑。 4. **...
Struts2采用了MVC(Model-View-Controller)设计模式,能够帮助开发者构建出易于维护和扩展的Web应用程序。 ### Struts2的核心组件 #### 1. **Action类** - Action类是Struts2中的核心组件之一,负责处理用户的...
sdfhrdioufhjkbnhgfhi
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web应用程序框架,它在Struts1的基础上进行了很多改进和增强,提供了更强大的功能和更好的性能。本教程将帮助初学者从零开始了解并掌握Struts2,快速...
在“输入校验(老师讲的).doc”这个文档中,可能详细讲解了如何编写和配置这些验证规则,包括如何创建验证表单、如何处理验证失败后的结果、如何自定义验证逻辑以及如何使用Struts2提供的工具和插件来优化验证流程。...
【标题】"Sturts-Product.rar_管理系统eclipse" 提供的是一个基于Struts框架的商品管理系统,使用Eclipse作为开发工具。这个项目的核心在于利用Java Web技术来实现对商品的管理和操作,其中Struts框架起到了关键作用...
8. **BBS2009**:`struts2_3000_BBS2009_01`和`struts2_3200_BBS2009_08_I18N`可能包含了一个简单的论坛应用示例,展示了如何在Struts2中实现用户交互和多语言支持(I18N,国际化)。 9. **访问Web元素**:`Struts2...
在sturts开发的分页,是一个非常简单的分页。当然你如果要分页显示出来,比对分页上有删除,修改的话。只要在pageBean里面增加一个你要操做的方法,是对ArrayList的操作,是删除的话,就做删除的操作,这可能对这个...
在这个"Struts2经典案例"中,我们将深入探讨如何利用Struts2实现数据库连接、JSP页面交互以及基本的数据操作功能。 首先,Struts2的核心是Action类,它是处理用户请求的核心组件。在这个案例中,我们可能会看到一个...
在Struts2的工作流程中,有几个关键组件和概念值得了解: 1. **Action类**:与Struts1不同,Struts2的Action类不再强制继承特定的抽象基类。你可以选择实现Action接口,也可以直接使用ActionSupport基类,这个基类...
它提供了一种结构化的解决方案来组织应用程序,使得业务逻辑、用户界面和数据管理能够清晰地分离。Struts的核心组件是`ActionServlet`,它负责处理用户的请求并将其转发到相应的Action对象进行处理。 #### 二、...
在"J2ee项目sturts技术开发的"这个主题中,我们将深入探讨Struts的关键特性和在实际项目中的应用。 1. **MVC模式**:Struts框架将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。...
Struts 1.2 是一个历史悠久的Web应用框架,由Apache软件基金会开发,它为Java开发者提供了一种组织和构建MVC(Model-View-Controller)应用程序的方式。在这个"struts1.2文件上传的实现"中,我们将深入探讨如何在...
在IT行业中,文件下载是一个常见的需求,特别是在Web应用中。`Struts2`是一个非常流行的Java Web框架,它提供了一套完整的解决方案来处理用户请求和响应。然而,在处理中文文件名下载时,可能会遇到乱码问题。这篇...
这个"hibernate+spring+sturts项目案例(含jar包)"提供了完整的SSH集成示例,对于初学者和有经验的开发者来说,都是一个宝贵的资源。 首先,让我们来深入了解一下这三个框架: 1. **Struts**:Struts 是一个基于MVC...
在描述中提到的"struts2的jar包"是构建Struts2项目所必需的核心库,包含了框架运行所需的各种组件和依赖。这些jar文件通常会放在一个名为"lib"的文件夹中,以便于开发者集成到他们的项目中。 Struts2的核心组件包括...
在“Sturts2课件第三天”的学习中,我们可能会涉及以下关键知识点: 1. **Struts2架构**:理解Struts2的核心组件和工作流程,包括Action、Result、Interceptor、Plug-in等,以及它们在请求处理中的作用。 2. **...