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的区别
分享到:
相关推荐
此标签与`logic:empty`相反,用于检查变量是否非空。如果变量不为空,则执行该标签内的代码。 **示例:** ```jsp <logic:notEmpty name="userList"> <!-- 如果userList非空,则执行这里的代码 --> </logic:not...
四、`<logic:present>`和`<logic:notPresent>`标签 这两个标签用于检查指定的请求、session或application级的属性是否存在。如果存在,`<logic:present>`将包含的JSP代码块渲染出来;反之,`<logic:notPresent>`将...
Struts Logic 标签解释和示例 Struts Logic 标签是一种功能强大的标签库,提供了多种逻辑判断和控制流程的功能。下面将对 Struts Logic 标签进行详细的解释和示例。 比较运算的 Logic 标签 * `<logic:equal>`:...
- `logic:empty` 和 `logic:notEmpty`:这两个标签用于判断变量是否为空。`logic:empty` 检查变量是否为null,空字符串,或者空的集合或Map。如果满足这些条件,则会显示标签内部的内容。相反,`logic:notEmpty` 则...
- `<logic:messagePresent>`和`<logic:messageNotPresent>`:用于检查request范围内是否存在特定的消息对象。 以上标签都是Struts Logic库的核心组成部分,它们极大地简化了基于Struts的应用程序的开发,提高了...
首先,我们来看一下`<logic:present>`和`<logic:notPresent>`这两个标签。它们主要用于检查请求、session或application作用域中是否存在某个对象。例如,如果要在页面上显示用户信息,但只有当用户登录时才显示,...
5. `<logic:empty>`和`<logic:notEmpty>`: 类似于上述的`present`和`notPresent`,这两个标签检查的是集合或字符串是否为空。在插入数据时,可以确保非空字段已填充;在删除操作中,确认要删除的数据不为空,避免因...
如果对象在当前作用域内,`<logic:present>`会执行,反之,`<logic:notPresent>`会执行。 **循环标签**: - **iterate**:用于迭代集合中的元素,类似于Java的for-each循环。 **流程控制标签**: - **forward**:...
`logic:iterate`配合`html:checkbox`可以实现列表的多选功能,而`logic:present`和`logic:empty`则有助于进行条件展示。 总的来说,Struts1标签库提供了一套完整的解决方案,让开发者能够在不接触大量JSP脚本的情况...
`logic:present`标签用于检查某个变量是否存在于指定的作用域内。 主要属性包括: - `name`:要检查的变量名。 - `scope`:变量的作用域。 示例代码: ```jsp <logic:present name="user" scope="session...
再者,Logic Tags库提供了逻辑控制和判断功能,如`<logic:iterate>`, `<logic:present>`, `<logic:messagesPresent>`, `<logic:empty>`, `<logic:match>`, `<logic:equal>`, 和`<logic:forward>`等。例如,`<logic:...
- `<logic:empty>` / `<logic:notEmpty>`:用于检查变量是否为空。 - 示例:`<logic:empty name="attr1">attr1为空</logic:empty>` - `<logic:present>` / `<logic:notPresent>`:检查变量是否存在。 - 示例:`...
* logic:notEmpty 标签:判断某个集合是否为空。 * logic:present 标签:判断某个对象是否存在。 通过学习和掌握这些标签,可以快速地完成 Struts 相关的任务,并提高 web 应用程序的开发效率。
例如,`<logic:present>`检查某个对象是否存在,`<logic:iterate>`遍历集合并在每个元素上执行操作,`<logic:equal>`比较两个值是否相等。这些标签使得在JSP页面上进行条件判断和循环变得更加直观。 **Nested Tags*...
Logic标签库提供了逻辑控制和集合迭代的功能,如`<logic:iterate>`、`<logic:present>`、`<logic:messagesPresent>`、`<logic:empty>`、`<logic:match>`、`<logic:equal>`和`<logic:forward>`等。例如,`<logic:...
- `<logic:present>`、`<logic:notPresent>`:检查请求、会话或应用程序范围内的对象是否存在。 - `<logic:redirect>`:重定向URL,实现页面跳转。 4. **使用Struts标记库的优点** - 提高代码可读性:通过标签将...
<logic:empty name="user" property="name"> <p>User name is empty. </logic:empty> ``` ##### 2. `equal` 标签 - **功能**:判断变量值是否等于指定的值,如果是则执行标签体内的内容。 - **示例**: ```xml...
- `<logic:present>`和`<logic:notPresent>`检查指定对象是否存在。 - `<logic:iterator>`遍历集合并输出每个元素。 **JSTL(JSP标准标签库)**: JSTL是一个标准的标签库,提供了对迭代、条件判断、数据格式化...
23. `logic:present` 和 `logic:notPresent`:这两个标签用于检查指定的值是否存在于某个作用域中,如果存在则渲染对应的代码块。 24. `logic:messagesPresent` 和 `logic:noMessagesPresent`:这两个标签用于检查...