前段時間一直覺得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中,當時我很鬱悶想了幾天 也在CSDN 上尋求協助但是最終沒有找到我想要的
直到問題發生的第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=========----------------------------------
希望以後碰到這樣問題的人不要花太多時間考慮了
如果這篇文章能協助你 希望你能發表留言謝謝