logic:messagesPresent标签的典型用法:
<logic:messagesPresent>
<ul>
<html:messages id="message">
<li><bean:write name="message"/></li>
</html:messages>
</ul>
</logic:messagesPresent>
logic:messagesPresent标签用于以下情况:
在request作用域中存在一个ActionMessages对象,标签的property属性和ActionMessages中的property对应。 在request作用域中存在一个ActionErrors对象,标签的property属性和ActionErrors中的property对应。 存在一个String对象,将其转换(构造)成ActionMessage然后在添加到ActionMessages中。
存在一个String Array对象,将数组中的每一个String转换成一个ActionMessage,在将其添加到ActionMessages中。 标签的message属性值为true时将以Globals.MESSAGE_KEY为key在request作用域中查找Message,其它情况下,将name的值作为key查找,如果name 没有出现,默认值为Globals.ERROR_KEY
html:message 可以让你向用户显示错误信息(默认)或消息信息,而html:errors 只显示错误信息。很明显,错误信息或消息信息一定要保存在request里,否则就什么也不会显示。
Ref:
[1]http://struts.apache.org/1.x/struts-taglib/tlddoc/index.html
[2]http://www.diybl.com/course/3_program/java/javajs/2008711/132741.html
<logic:messagesPresent property="property1" message="true"> Message:property1 存在 </logic:messagesPresent>
我们知道,在Action类中我们可以通过将一个ActionErrors或ActionMessages对象添加进request scope
saveMessages(request, msgs);
用Globals.MESSAGE_KEY(值为”org.apache.struts.action.MESSAGE”)作为键。
saveErrors(request, msgs);
用Globals.ERROR_KEY(值为”org.apache.struts.action.ERROR”)作为键。
<logic:messagesPresent/> 标签就是用来检测在request scope内,有没有以名为Globals.MESSAGE_KEY或Globals.ERROR_KEY的Errors/Messages对象。
该标签的message属性,指定检测在那里进行。(Globals.ERROR_KEY
缺省
或
Globals.MESSAGE_KEY
设为
true
)
如:<logic:messagesPresent property="property1">
就是检测在request scope中有没有一个名为:”org.apache.struts.action.ERROR” 也就是Globals.ERROR_KEY的值,的对象,而在该对象中,有没有一个名为”property1”的属性。
如:<logic:messagesPresent property="property1" message="true">
就是检测在request scope中有没有一个名为:”org.apache.struts.action.Message” 也就是Globals.MESSAGE_KEY的值,的对象,而在该对象中,有没有一个名为”property1”的属性。
其实我们在后台通过 saveErrors(request, msgs); 就相当于
request.setAttribute(Globals.ERROR_KEY, msgs);
之所以用saveErrors方法,就是简化操作,让我们不用为这个对象命名,使用default的名字,从而前台logic:messagesPresent标签中也不用指定name属性,因为在属性message不是true的情况下,该标签默认认为,我们就是来检测名为 Globals.ERROR_KEY的对象。
所以,如果我们在后台 request.setAttribute("MyErrors", msgs);
而前台 <logic:messagesPresent name="MyErrors" property="property1">
指定属性name,是一样可以进行判断的。
而当message属性为true的时候,标签就会忽略name属性,只检测名为 Globals.MESSAGE_KEY的对象。这种情况我们就只能以这个default的名字来命名存储在request scope中的对象。
可为什么我们一定要用struts默认的名字(Globals.ERROR_KEY/Globals.MESSAGE_KEY)呢?因为我们只检测是否存在是不够的。对于messages或者errors我们更重要的是来显示它的信息(丛rescources里面获取)一般用<html:messages/>或者<html:errors/>。而这两个标签,默认都是得到名为Globals.ERROR_KEY或Globals.MESSAGE_KEY的对象。当然我们通过指定name属性,也可以得到我们自定义的名字。但问题是它将无法从我们自定义名字的对象中获得属性,也就是说你不能指定property,因为你自定义的名字无法映射到它所包含的对象中的属性(也就是没有getter()方法)。而如果用default的命名方式(Globals.ERROR_KEY或Globals.MESSAGE_KEY) ,struts就会建立这种对象与属性之间的映射。
分享到:
相关推荐
`logic:messagesPresent`会在有消息时显示,`logic:messagesNotPresent`则在没有消息时显示。它们通常用于处理表单验证错误: ```jsp <logic:messagesPresent> <li><bean:message key="error.username.required...
* `<logic:messagesPresent>`:判断指定的消息是否存在 * `<logic:messagesNotPresent>`:判断指定的消息是否不存在 循环遍历的 Logic 标签 * `<logic:iterate>`:进行循环遍历 请求转发或重定向的 Logic 标签 *...
- 使用`<html:errors>`标签来显示全局错误,以及`<logic:messagesPresent>`来显示ActionForm级别的错误信息。 - 在处理表单数据时,利用`<html:checkbox>`, `<html:radio>`和`<html:select>`等标签,确保数据绑定...
`logic:messagesPresent`标签用于检查是否有错误消息存在。 示例代码: ```jsp <logic:messagesPresent> <html:errors/> </logic:messagesPresent> ``` - **logic:empty** `logic:empty`标签用于检查集合...
如果页面中有错误信息,`<logic:messagesPresent>`将被执行。 6. **present/notPresent**:检查特定的属性或对象是否存在。如果对象在当前作用域内,`<logic:present>`会执行,反之,`<logic:notPresent>`会执行。 ...
- `logic:messagesPresent`: 检查是否有任何错误或消息存在。 - `logic:empty`: 检查集合或属性是否为空。 - `logic:match`: 比较两个值是否相等。 - `logic:equal`: 检查两个值是否相等,支持比较不同类型的...
</logic:messagesPresent> ``` ##### 12. `notEmpty` 标签 - **功能**:如果变量非空且非null,则执行标签体内的内容。 - **示例**: ```xml <logic:notEmpty name="user" property="address"> <p>User has an...
再者,Logic Tags库提供了逻辑控制和判断功能,如`<logic:iterate>`, `<logic:present>`, `<logic:messagesPresent>`, `<logic:empty>`, `<logic:match>`, `<logic:equal>`, 和`<logic:forward>`等。例如,`<logic:...
Logic标签库提供了逻辑控制和集合迭代的功能,如`<logic:iterate>`、`<logic:present>`、`<logic:messagesPresent>`、`<logic:empty>`、`<logic:match>`、`<logic:equal>`和`<logic:forward>`等。例如,`<logic:...
- **logic:messagesPresent**、**logic:messagesNotPresent** 检查是否有错误或信息消息。 - **logic:equal**、**logic:notEqual**、**logic:greaterThan**、**logic:lessThan** 等比较操作标签,用于条件判断。 ...
- `logic:messagesPresent`/`logic:messagesNotPresent`:检查ActionMessage或ActionError是否存在。 - `logic:iterate`:遍历集合,如ArrayList、Map等,并将其内容输出到页面。 - `logic:present`/`logic:not...
* logic:messagesPresent:判断是否有国际化消息。 * logic:present:判断一个值是否存在。 * logic:notEqual:判断两个值是否不相等。 * logic:notPresent:判断一个值是否不存在。 Struts1 标签库提供了非常多的...
24. `logic:messagesPresent` 和 `logic:noMessagesPresent`:这两个标签用于检查是否有错误或信息消息存在,如果有则显示消息。 25. `logic:empty` 和 `logic:notEmpty`:这两个标签用于判断一个集合或对象是否为...
在`<logic:messagesPresent>`标签中,`<html:messages id="error" property="name">`会检查`name`属性是否存在消息,如果有则显示。 5. **消息按key显示**: 在Action中,键名(如`name`)必须与JSP页面上的属性值...
在一个简单的登录页面中,可以使用`<html:text>`创建用户名和密码输入框,`<html:submit>`创建提交按钮,`<bean:message>`显示错误信息,通过`<logic:messagesPresent>`检查是否有错误信息。 6. **优点**: - ...
- 使用`<logic:messagesPresent>`和`<html:messages>`处理全局错误和警告。 - 结合Struts的Validator框架,利用`<html:errors>`标签进行前端验证提示。 五、Struts 2的升级 随着Struts 2框架的出现,其Taglibs也...
**logic:messagesPresent** - **功能概述**:检查是否有消息存在,常用于显示错误或提示信息。 **logic:empty** - **功能概述**:检查字符串、集合或数组是否为空。 **logic:match** - **功能概述**:检查两个字符...
- `<logic:messagesPresent>`、`<bean:message>`:处理错误消息和显示国际化信息。 2. 显示标签: - `<display:table>`:用于展示数据集合,如数据库查询结果,支持分页、排序等功能。 - `<display:column>`:...