`

logic:empty和logic:notEmpty的用法和区别

阅读更多

logic:empty标签判断脚本变量是否为null,是否是一个空的字符串(长度为0),是否是一个空的collection或map(调用isEmpty()方法来判断)。logic:notEmpty标签类似。

<logic:empty name="myBean">
    The bean is missing
</logic:empty>
<logic:notEmpty name="myBean">
    The bean is not missing
</logic:notEmpty>

上段代码表示当一个名为myBean的bean在所有的scope中都不存在时,输出The bean is missing;存在的话输出The bean is not missing。
此标签有三个属性:name、property和scope。
---------------------------------------------------------------
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
分享到:
评论

相关推荐

    logic:iterate 是什么,怎么用

    可以结合其他逻辑标签(如 `&lt;logic:equal&gt;`、`&lt;logic:notEmpty&gt;` 等)来实现更复杂的条件迭代逻辑。 ##### 2. 指定索引 使用 `&lt;bean:size&gt;` 和 `&lt;bean:write&gt;` 可以获取集合的大小,并在迭代过程中指定元素的索引...

    struts1 table标签中Logic的使用属性

    &lt;logic:notEmpty name="userList"&gt; &lt;!-- 如果userList非空,则执行这里的代码 --&gt; &lt;/logic:notEmpty&gt; ``` #### 3. `logic:equal` 用于比较两个值是否相等。支持基本类型以及对象属性的比较。 **示例1:** 检查...

    Struts1-Logic标签

    与`logic:empty`相反,`logic:notEmpty`标签用于判断对象不为空时执行其内部内容。这个标签常用来处理非空数据的情况。 3. `logic:equal`和`logic:notEqual` 这两个标签用于比较两个值是否相等或不等。`logic:equal...

    struts logic:iterater 换行

    其中,`&lt;logic:iterate&gt;`标签是一个常用且强大的迭代标签,用于遍历集合或数组中的元素,并可以结合其他逻辑标签如`&lt;logic:equal&gt;`、`&lt;logic:notEmpty&gt;`等来实现复杂的业务逻辑。 ### `&lt;logic:iterate&gt;`标签详解 `...

    Logic 标签库.doc

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

    struts logic 标签

    7. `logic:greaterThan`:这个标签用于判断是否大于指定值,使用方法与`logic:greaterEqual`相似。 8. `logic:lessEqual`:用于判断是否小于等于指定值,用法与`logic:greaterEqual`一致。 9. `logic:lessThan`:...

    struts logic 标签解释 跟例子

    * `&lt;logic:notEmpty&gt;`:判断变量中是否不为空 * `&lt;logic:present&gt;`:判断指定的 JavaBean、Cookie 等是否存在 * `&lt;logic:notPresent&gt;`:判断指定的 JavaBean、Cookie 等是否不存在 * `&lt;logic:messagesPresent&gt;`:...

    logic标签的问题及解答

    除了上述基本用法,`&lt;logic:iterate&gt;`还可以与其他逻辑标签结合使用,例如`&lt;logic:notEmpty&gt;`、`&lt;logic:equal&gt;`等,实现更复杂的条件判断和流程控制。 需要注意的是,随着技术的发展,Struts 1的`logic`标签库在...

    struts1逻辑标签logic的使用

    一、`&lt;logic:notEmpty&gt;`标签 这个标签用于检查指定集合或属性是否为空。如果内容不为空,那么它包含的JSP代码块将会被渲染。例如,你可以用它来检查一个列表是否为空,然后决定是否显示“无数据”提示。 ```jsp ...

    struts logic标签库使用手册

    - `&lt;logic:notEmpty&gt;`:检查变量不是`null`且非空,如果`list`有元素,该标签就会生效。 4. **对象存在性判断标签**: - `&lt;logic:present&gt;`:检查指定的对象或变量是否存在于指定的作用域(如request,session)...

    Struts之logic标签库详解

    `logic:notEmpty` 标签的作用与`logic:empty`相反,当对象不为空时,它的内容会被处理。这个标签常用于反向逻辑判断。 3. **logic:equal 和 其他比较标签** `logic:equal` 标签用于比较两个值是否相等,它可以...

    重要知识logic标签库.pdf

    - `&lt;logic:notEmpty&gt;`则是`&lt;logic:empty&gt;`的反向操作。 - `&lt;logic:iterate&gt;`可用于遍历集合,并对每个元素执行标签体内的代码。 总的来说,逻辑标签库是JSP开发中不可或缺的一部分,它提高了代码的可读性和维护性,...

    Struts logic标签及增删改查

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

    精通Struts书中讲解logictaglibs的例子

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

    Struts1.2常见标签使用对学java的人有用

    本文将详细介绍 Struts 1.2 中常见的标签及其使用方法。 #### HTML 类标签 1. **html:textproperty** - **语法**:`&lt;html:textproperty property="属性名" form="表单对象名"/&gt;` - **功能**:用于显示文本框,...

    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;`:检查变量是否存在。 - 示例:`...

    Java+structs快速学习指南

    - 内容:展示如何使用Struts来动态显示内容,介绍Tiles组件的使用方法,验证用户输入的方法,国际化支持,以及Struts如何与数据服务进行交互。 - 示例:通过具体的例子来演示如何构建用户友好的页面。 4. **...

    struts1标签判断奇偶数实例

    在这个实例中,`&lt;logic:notEmpty name="yaoqiuList"&gt;`确保`yaoqiuList`不为空,即至少存在一个元素,这是遍历和进一步处理列表的前提条件。 #### 3. `&lt;logic:iterate&gt;`标签 `&lt;logic:iterate&gt;`标签允许遍历集合或...

    struts1.x标签库详解

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

Global site tag (gtag.js) - Google Analytics