在js或者jquery中使用s標籤,其實並不難理解,s標籤也只是一個標籤而已,當你想象成js+s標籤=js+html標籤就理解了
例如:
<script type="text/javascript">
var username = '<s:property value="%{user.username}"/>';
var password = '<s:property value="#session.user.password"/>';
var sex = "";
<s:if test="%{user.flag}">
sex= <s:property value="%{user.sex}"/>;
</s:if>
</script>
通過上面的方式,就可以在js中通過s標籤直接獲得後臺數據,不用通過html標籤元素中轉或者通過ajax了,夠簡單
PS:
1、在js中使用s標籤進行取值,需要將s標籤寫在單引號或者雙引號內部,否則頁面會報警告,如果是<s:if>這樣的標籤就沒有限制了,測試的s標籤不多,別的問題就不知道了,嘿嘿
2、如果你想在js文件中使用s標籤,是取不出來值的,解決辦法是:在純js的<script>標籤內部定義變量並進行取值,然後在js文件中引用你定義的變量
再多說一點:
下面這個例子中單引號的使用在於:通過EL表達式取值,如果取出來,則顯示;如果出不出來值,則不顯示,也不顯示null,如果使用${param.reqFormId}==null做判斷,永遠也不會相等
例如:注意單引號的使用,也可以是雙引號
var pageCount='${pagination.pageCount}';
if(pageCount==1){
alert("ok");
}
或者
if(pageCount==‘1’){
alert("ok");
}
注意單引號
var formId='${param.reqFormId}'==''?'0' : '${param.reqFormId}';
在s標籤中使用,腳本標籤,位置、單、雙引號的使用錯誤與正確的對比(使用tomcat5.0.28以上版本,tomcat5.0.28一下,下面的方式沒有錯):
錯誤:
<% String a = request.getAttribute("key").toString(); %>
<s:if test="<%= a.equals("mainMember") %>"' >
。。。。。。。
</s:if>
錯誤分析:雙引號套用雙引號指定是不允許的,所以要將腳本標籤外層的雙引號改爲單引號
<% String a = request.getAttribute("key").toString(); %>
<s:if test='<%= a.equals("mainMember") %>’ >
。。。。。。。
</s:if>
採用這樣的方式回報:
The method setTest(String) in the type ElseIfTag is not applicable for the arguments (boolean)
意思是:該方法setTest(字符串)類型ElseIfTag中是不適用的參數值(布爾值)
所以再換一種方式:
<% String a = request.getAttribute("key").toString(); %>
<s:if test='"mainMember".equals(<%=a %>)' >
。。。。。。。
</s:if>
ok,不過我感覺這個和上面那個都是獲得的boolean值,但是這個卻可以了,沒明白,反正遇到這樣的問題,就是兩個字:折騰,折騰單引號與雙引號,折騰標籤位置,總會成功的