`

logic:present 和 logic:empty

 
阅读更多

 

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 

 

 

参见关于StringUtils的isBlank和isEmpty的区别

http://jxyang.iteye.com/blog/1670266

 

 

 

 

分享到:
评论

相关推荐

    struts1 table标签中Logic的使用属性

    此标签与`logic:empty`相反,用于检查变量是否非空。如果变量不为空,则执行该标签内的代码。 **示例:** ```jsp &lt;logic:notEmpty name="userList"&gt; &lt;!-- 如果userList非空,则执行这里的代码 --&gt; &lt;/logic:not...

    struts1逻辑标签logic的使用

    四、`&lt;logic:present&gt;`和`&lt;logic:notPresent&gt;`标签 这两个标签用于检查指定的请求、session或application级的属性是否存在。如果存在,`&lt;logic:present&gt;`将包含的JSP代码块渲染出来;反之,`&lt;logic:notPresent&gt;`将...

    struts logic 标签解释 跟例子

    Struts Logic 标签解释和示例 Struts Logic 标签是一种功能强大的标签库,提供了多种逻辑判断和控制流程的功能。下面将对 Struts Logic 标签进行详细的解释和示例。 比较运算的 Logic 标签 * `&lt;logic:equal&gt;`:...

    Logic 标签库.doc

    - `logic:empty` 和 `logic:notEmpty`:这两个标签用于判断变量是否为空。`logic:empty` 检查变量是否为null,空字符串,或者空的集合或Map。如果满足这些条件,则会显示标签内部的内容。相反,`logic:notEmpty` 则...

    struts logic标签库使用手册

    - `&lt;logic:messagePresent&gt;`和`&lt;logic:messageNotPresent&gt;`:用于检查request范围内是否存在特定的消息对象。 以上标签都是Struts Logic库的核心组成部分,它们极大地简化了基于Struts的应用程序的开发,提高了...

    精通Struts书中讲解logictaglibs的例子

    首先,我们来看一下`&lt;logic:present&gt;`和`&lt;logic:notPresent&gt;`这两个标签。它们主要用于检查请求、session或application作用域中是否存在某个对象。例如,如果要在页面上显示用户信息,但只有当用户登录时才显示,...

    Struts logic标签及增删改查

    5. `&lt;logic:empty&gt;`和`&lt;logic:notEmpty&gt;`: 类似于上述的`present`和`notPresent`,这两个标签检查的是集合或字符串是否为空。在插入数据时,可以确保非空字段已填充;在删除操作中,确认要删除的数据不为空,避免因...

    重要知识logic标签库.pdf

    如果对象在当前作用域内,`&lt;logic:present&gt;`会执行,反之,`&lt;logic:notPresent&gt;`会执行。 **循环标签**: - **iterate**:用于迭代集合中的元素,类似于Java的for-each循环。 **流程控制标签**: - **forward**:...

    struts1标签库详解借鉴.pdf

    `logic:iterate`配合`html:checkbox`可以实现列表的多选功能,而`logic:present`和`logic:empty`则有助于进行条件展示。 总的来说,Struts1标签库提供了一套完整的解决方案,让开发者能够在不接触大量JSP脚本的情况...

    struts标准手册

    `logic:present`标签用于检查某个变量是否存在于指定的作用域内。 主要属性包括: - `name`:要检查的变量名。 - `scope`:变量的作用域。 示例代码: ```jsp &lt;logic:present name="user" scope="session...

    Struts1标签手册

    再者,Logic Tags库提供了逻辑控制和判断功能,如`&lt;logic:iterate&gt;`, `&lt;logic:present&gt;`, `&lt;logic:messagesPresent&gt;`, `&lt;logic:empty&gt;`, `&lt;logic:match&gt;`, `&lt;logic:equal&gt;`, 和`&lt;logic:forward&gt;`等。例如,`&lt;logic:...

    Struts详细资料整理

    - `&lt;logic:empty&gt;` / `&lt;logic:notEmpty&gt;`:用于检查变量是否为空。 - 示例:`&lt;logic:empty name="attr1"&gt;attr1为空&lt;/logic:empty&gt;` - `&lt;logic:present&gt;` / `&lt;logic:notPresent&gt;`:检查变量是否存在。 - 示例:`...

    struts1.x标签库详解

    * logic:notEmpty 标签:判断某个集合是否为空。 * logic:present 标签:判断某个对象是否存在。 通过学习和掌握这些标签,可以快速地完成 Struts 相关的任务,并提高 web 应用程序的开发效率。

    重要知识Struts标签大全.pdf

    例如,`&lt;logic:present&gt;`检查某个对象是否存在,`&lt;logic:iterate&gt;`遍历集合并在每个元素上执行操作,`&lt;logic:equal&gt;`比较两个值是否相等。这些标签使得在JSP页面上进行条件判断和循环变得更加直观。 **Nested Tags*...

    Struts标签的使用

    Logic标签库提供了逻辑控制和集合迭代的功能,如`&lt;logic:iterate&gt;`、`&lt;logic:present&gt;`、`&lt;logic:messagesPresent&gt;`、`&lt;logic:empty&gt;`、`&lt;logic:match&gt;`、`&lt;logic:equal&gt;`和`&lt;logic:forward&gt;`等。例如,`&lt;logic:...

    Struts标记库.rar

    - `&lt;logic:present&gt;`、`&lt;logic:notPresent&gt;`:检查请求、会话或应用程序范围内的对象是否存在。 - `&lt;logic:redirect&gt;`:重定向URL,实现页面跳转。 4. **使用Struts标记库的优点** - 提高代码可读性:通过标签将...

    Java+structs快速学习指南

    &lt;logic:empty name="user" property="name"&gt; &lt;p&gt;User name is empty. &lt;/logic:empty&gt; ``` ##### 2. `equal` 标签 - **功能**:判断变量值是否等于指定的值,如果是则执行标签体内的内容。 - **示例**: ```xml...

    Java框架之Struct

    - `&lt;logic:present&gt;`和`&lt;logic:notPresent&gt;`检查指定对象是否存在。 - `&lt;logic:iterator&gt;`遍历集合并输出每个元素。 **JSTL(JSP标准标签库)**: JSTL是一个标准的标签库,提供了对迭代、条件判断、数据格式化...

    struts1标签库

    23. `logic:present` 和 `logic:notPresent`:这两个标签用于检查指定的值是否存在于某个作用域中,如果存在则渲染对应的代码块。 24. `logic:messagesPresent` 和 `logic:noMessagesPresent`:这两个标签用于检查...

Global site tag (gtag.js) - Google Analytics