2016-10-30 3 views
1

struts 2 버전 2.5.3에서 2.5.5으로 업그레이드하려고했습니다. 이상한 문제가 있습니다.Struts 2.5.5에서 2.5.3으로 업그레이드

우리는 다음과 같은 태그가 :

<%@tag description="Rensders an ajax link" pageEncoding="UTF-8"%> 

<%@attribute name="parameters" description="list of parameters that put to this link" 
    type="java.util.HashMap" required="false"%> 

     .............. 
     <c:forEach items="${parameters}" var="p"> 
       <c:param name="${p.key}" value="${p.value}"/> 
     </c:forEach> 

위의 코드는 내가 업그레이드 예외가 발생합니다!

Caused by: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt; 
    at org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:274) 
    at org.apache.taglibs.standard.tag.common.core.ForEachSupport.supportedTypeForEachIterator(ForEachSupport.java:238) 
    at org.apache.taglibs.standard.tag.common.core.ForEachSupport.prepare(ForEachSupport.java:155) 
    at javax.servlet.jsp.jstl.core.LoopTagSupport.doStartTag(LoopTagSupport.java:256) 
    at org.apache.jsp.tag.web.html.link_tag._jspx_meth_c_005fforEach_005f0(link_tag.java:439) 
    at org.apache.jsp.tag.web.html.link_tag._jspx_meth_c_005furl_005f0(link_tag.java:405) 
    at org.apache.jsp.tag.web.html.link_tag._jspx_meth_sec_005fauthorize_005f0(link_tag.java:366) 
    at org.apache.jsp.tag.web.html.link_tag.doTag(link_tag.java:230) 

태그가 Struts가 아닌 JSTL 태그임을 확인한 것처럼!

톰캣 8.0을 사용합니다. 의견.

답변

2

놀랍게도 내 태그에 사용 된 parameters 이름이 스트럿츠 2와 충돌합니다.이 버전의 스트럿츠는 문맥 상으로는 parameters으로 이름 충돌이있는 것으로 보입니다.

나는 JSP에서 ${parameters}을 테스트 할 때 나는 JSP에서 ${parameters}2.5.5 스트럿 테스트 할 때 내가

에 주목 참조 2.5.3 스트럿 나는

org.apache.struts2.dispatcher.HttpParameters 그래서 내가 params에 속성을 태그 할 수 개명보고 모든 것이 괜찮습니다!

+1

이것은 이상합니다 ...'parameters' name은 매우 오랫동안 존재 했었습니다. 단순한'Map'에서'HttpParameters'로 타입을 바꾸는 것과 관련이 있습니다 -'Map'은 비어있을 수 있고 그것을 무시할 수 있습니다. 당신의'지도'. –