前段时间一直觉得Struts的标签用的很怪异,直到前天碰到一个 问题使我彻底对它失去了喜好
URL传参 访问一页面传参 然后根据参数判断
如
访问以下页面URL
http://localhost:8089/test/a.jsp?name=yzsunlight
-------------------------------------========a.jsp=========----------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
</head>
<body>
<h1>if 补充 </h1>
<s:property value="#parameters.name"/>//打印有值
<s:if test="#parameters.name=='yzsunlight'">OK 没错 </s:if>//不行
<s:if test="#parameters.name.equals('yzsunlight')">OK 没错 </s:if>//不行
</body>
</html>
-------------------------------------========a.jsp=========----------------------------------
就上面一个简单的代码 但是始终不能进入到IF中,当时我很郁闷想了几天 也在优快云 上寻求帮助但是最终没有找到我想要的
直到问题发生的第3天 我偶然想起这个问题 才在一个帮助文档中发现 原来
Struts2是将URL传的参数封装成一个数组的 也就是你可以在一个URL 传两个同名的参数,个人觉得这个做的不怎么好因为一般在传参的时候如果要传数组也不会通过URL 方式处理 。
所以上面的取参数应该改为
-------------------------------------========a.jsp=========----------------------------------
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<html>
<head>
</head>
<body>
<h1>if 补充 </h1>
<s:property value="#parameters.name[0]"/>//打印有值
<s:if test="#parameters.name[0]=='yzsunlight'">OK 没错 </s:if>//不行
<s:if test="#parameters.name[0].equals('yzsunlight')">OK 没错 </s:if>//不行
</body>
</html>
-------------------------------------========a.jsp=========----------------------------------
希望以后碰到这样问题的人不要花太多时间考虑了
如果这篇文章能帮助你 希望你能发表留言谢谢