Struts 2不再支持在struts tag裏使用JSP EL表達式

當你使用struts 2 tags時,如果使用代碼:

<s:set name="name" value="<%= "'" + request.getParameter("name") + "'" %>" />

或者       

<s:set name="name" value="${param.name}" />

都會發生下列錯誤:

According to TLD or attribute directive in tag file, attribute value does not accept any expressions

而得使用:

<s:set name="name" value="#parameters.name[0]" />

才行

原因可能是因爲你使用了<%..%>代碼 or JSP EL表達式。Struts 2從 version 2.0.11開始已經不支持struts tag與JSP EL表達式混合使用了(不在struts tag裏使用EL還是可以的),而只支持OGNL


Trick Tip:

對於<s:property>,是使用

<s:property value="#parameters.name" />

而對於<s:set>,則要使用(否則出錯):

<s:set name="name" value="#parameters.name[0]" />

 但是如果使用struts include tag來傳參數,則<s:property>和<s:set>無法獲取傳來的參數,如:

  <body>
     
<s:include   value= "/welcome.jsp"> 
           
<s:param name="name">Scott</s:param>
     
</s:include>
 
</body>

那麼在webcome.jsp裏通過<s:property>和<s:set>無法獲取"name"參數:

<s:property value="#parameters.name" />

<s:set name="name" value="#parameters.name[0]" />

而只能夠用

<%request.getParameter("name")%>

來獲取



發佈了38 篇原創文章 · 獲贊 3 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章