Struts Logic标签库中的标签可以根据特定 逻辑条件来控制输出网页内容,或者循环遍历集合中的所有元素,大致分为:
- 进行比较运算的Logic标签
- 进行字符串匹配的Logic标签
- 判断指定内容是否存在的Logic标签
- 进行循环遍历的Logic标签
- 进行请求转发或重定向的Logic标签
进行比较运算的Logic标签
- <logic:equal>:比较变量是否等于指定的常量。
- <logic:notEqual>;比较变量是否不等于指定的常量
- <logic:greaterEqual>;比较变量是否大于或等于指定的常量
- <logic:greaterThan>;比较变量是否大于指定的常量
- <logic:lessEqual>;比较变量是否小于或等于指定常量
- <logci:lessThan>;比较变量是否小于指定常量
所有的比较运算标签都比较一个变量和指定常量的大小,比较运算标签的value属性指定常量值,可以通过以下方式来设置变量:
- 设置cookie属性,此时变量为cookie属性指定的Cookie值,例如:
<%
Cookie c = new Cookie("username", "Linda");
c.setComment("A test cookie");
c.setMaxAge(3600); //60 seconds times 60 minutes
response.addCookie(c);
%>
<logic:equal cookie="username" value="Linda" >
UserName in Cookie is Linda <p>
</logic:equal>
- 设置header属性,此时变量为header属性指定的HTTP请求中的Header信息,例如:
- <logic:equal header="Accept-Language" value="zh-cn" >
Client’s language is: zh-cn. <p>
</logic:equal> - 设置parameter属性,此时变量为parameter属性指定的请求参数值,例如:
- <logic:greaterThan parameter="arg1" value="100" >
The first request parameter is greater than 100 <p>
</logic:greaterThan > - 例如请求访问该jsp的URL为:http://localhost:8080/***.jsp>arg1=200就会输出标签主体的文本。
- 设置name属性,此时name属性指定被比较的变量,比较运算标签调用变量的toString()方法,获得被比较的字符串值,例如;
- <%
request.setAttribute("intBean",new Integer(100));
%>
<logic:equal name="intBean" value="100" >
The value of intBean is "100".<p>
</logic:equal > - 在默认情况下,将依次在page,request,session和application范围内寻找name属性指定的变量,此外,也可以通过scope属性来指定变量的存在范围。
- 同时设置name和property属性,此时name属性指定已经存在的JavaBean,property指定JavaBean的属性,被比较的变量为这个属性的值,例如:
- <%
SomeBean bean=new SomeBean();
bean.setName("Linda");
request.setAttribute("someBean",bean);
%>
<logic:notEqual name="someBean" property="name" value="Tom" >
The name of someBean is not "Tom" <p>
</logic:notEqual > - 如果两个字符串都可以成功转化为数字,就比较数字的大小,否则就进行字符串比较,例如;
- <% request.setAttribute("number","100"); %>
<logic:equal name="number" value="/100.0" >
"100" equals "100.0" <p>
</logic:equal > - <logic:lessThan name="number" value="/100.0a" >
"100" is less than "100.0a" <p>
</logic:lessThan >