📄 logic-present.jsp
字号:
<%@ page contentType="text/html;charset=GB2312" import="java.util.*,org.apache.struts.webapp.exercise.*,org.apache.struts.action.*,org.apache.struts.*"%>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<head>
<html:base/>
<title>Presence标记</title>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body bgcolor="white">
<h1>Presence标记</h1>
<p>Presence标记包括以下四个:</p>
<ul>
<li><logic:present></li>
<li><logic:present></li>
<li><logic:messagesPresent></li>
<li><logic:messagesNotPresent></li>
</ul>
<p>先讲<logic:present>和<logic:present>两个标记。它们的功能是用于判断所指定的对象是否存在。例如有以下代码
示例:</p>
<font class="CodeStyle">
<%<br>
pageContext.setAttribute("ExistingString","teststring");<br>
%><br>
<logic:present name="ExistingString"><br>
ExistingString的值为<bean:write name="ExistingString"/><br>
</logic:present>
</font>
<p>上面的代码首先向pageContext对象中存入一个字符串对象,并命名为ExistingString。然后使用<logic:present>标记来判
断是否存在"ExistingString"这个变量。如果存在,就将ExistingString变量的值输出。以下是运行效果:</p>
<%
pageContext.setAttribute("ExistingString","teststring");
%>
<logic:present name="ExistingString">
ExistingString的值为<bean:write name="ExistingString"/>
</logic:present>
<p><logic:present>和<logic:present>标记有以下几个常用属性:<p>
<p>header属性:判断是否存在header属性所指定的header信息。</p>
<p>parameter属性:判断是否存在parameter属性指定的请求参数。</p>
<p>cookie属性:判断cookie属性所指定的同名cookie对象是否存在。</p>
<p>name属性:判断name属性所指定的变量是否存在。</p>
<p>property属性:和name属性同时使用,当name属性所指定的变量是一个JavaBean时,判断property属性所指定的对象属性是否存在。</p>
<p>以下是一个使用name和property属性的例子:</p>
<font class="CodeStyle">
<%<br>
TestPageBean testbean = new TestPageBean("name of testbean","value");<br>
pageContext.setAttribute("test",testbean);<br>
%><br>
<logic:notPresent name="test" property="title"><br>
<bean:write name="test" property="name"/><br>
</logic:notPresent><br>
</font>
<p>上面的代码首先创建了一个TestPageBean的对象,并将该对象存入pageContext对象中,命名为test。接下来,使用
<logic:notPresent>标记来判断test对象是否有一个属性叫title。如果有,则返回false,如没有,则返回true,并将test对象的
name属性显示出来。由于TestPageBean对象只有两个属性,一个是name,一个是value。所以,title属性并不存在。运行效果如下所示:</p>
<%
TestPageBean testbean = new TestPageBean("name of testbean","value");
pageContext.setAttribute("test",testbean);
%>
<logic:notPresent name="test" property="title">
<bean:write name="test" property="name"/>
</logic:notPresent>
<hr>
<p>接下来说一下<messagePresent>标记和<messageNotPresent>标记。这两个标记是来判断是否在request内存在特定的
ActionMessages或ActionErrors对象。它们有几个常用的属性:</p>
<p>name属性:指定了ActionMessages在request对象内存储时的key值。</p>
<p>message属性:message属性有两种取值。当其为true时,表示使用Globals.MESSAGE_KEY做为从request对象中获取ActionMessages的key
值,此时无论name指定什么都无效;当其为false时,则表示需要根据name属性所指定的值做为从request对象中获取ActionMessages的key
值,倘若此时未设置name属性的值,则使用默认的Globals.ERROR_KEY。</p>
<p>property属性:指定ActionMessages对象中某条特定消息的key值。</p>
<p>以下是一段代码示例:</p>
<font class="CodeStyle">
<%<br>
ActionMessages messages = new ActionMessages();<br>
messages.add("message1",new ActionMessage("html.errors.error1"));<br>
request.setAttribute(Globals.MESSAGE_KEY,messages);<br>
%><br>
<logic:messagesPresent message="true" property="message1"><br>
所查找的ActionMessage存在。<br>
</logic:messagesPresent><br>
</font>
<p>在上面的代码中,首先创建了一个ActionMessages对象,然后向其中添加了一个ActionMessage,将其命名为message1。再把这个
ActionMessages对象存入requeset对象中,命名为Globals.MESSAGE_KEY。接下来,将<messagePresent>标记的message属性设为
true(即默认在request中查找key值为Globals.MESSAGE_KEY的对象),property属性的值设为message1,判断是否存在这样一个ActionMessage
对象,倘若存在,则输出相应文本。运行效果如下所示:</p>
<%
ActionMessages messages = new ActionMessages();
messages.add("message1",new ActionMessage("html.errors.error1"));
request.setAttribute(Globals.MESSAGE_KEY,messages);
%>
<logic:messagesPresent message="true" property="message1">
所查找的ActionMessage存在。
</logic:messagesPresent>
<p>
<a href="index.jsp">返回主页面</a>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -