1

在一个 struts 2 项目中,我在执行这样的循环时收到 ognl 警告:

<c:set var="unitArray" value="${fn:split(unit, ',')}" />

<c:forTokens items="${key}" delims="," var="name" varStatus="counter">    
    <s:text name="%{#attr.unitArray[#attr.counter.index]}" />   
</c:forTokens>

警告是

    Package of target [javax.servlet.jsp.jstl.core.LoopTagSupport$1Status@353a1d92] or 
      package of member [public int javax.servlet.jsp.jstl.core.LoopTagSupport$1Status.getIndex()] are excluded!

这能解决吗?!

4

1 回答 1

1

您可以将状态变量的值放入值堆栈并使用它来代替 JSTL 标记的状态索引。

<c:forTokens items="${key}" delims="," var="name" varStatus="counter"> 
    <s:set var="idx">${counter.index}</set>   
    <s:text name="%{#attr.unitArray[#idx]}" />   
</c:forTokens>

或者使用相反的操作,只需将操作放到页面上下文中并在<c:out>. 我没有使用这种方法,但您可以尝试。

于 2016-05-04T09:31:08.263 回答