2016-05-04 11 views
1

In einem Streben 2 Projekt, das ich die OGNL Warnung erhalten, während eine Schleife wie dies zu tun:Struts 2 ognl.SecurityMemberAccess Warnung

<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> 

Die Warnung wird

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

Kann diese gelöst werden ?!

+0

Können Sie erklären, was Sie hier erreichen wollen? Warum nicht einfach "unitArray" iterieren? –

+0

Sehr geehrte @AleksandrM, das ist nur ein Teil der Codes, ich kann den vollen Code hier, wenn Sie denken, dass es helfen wird. Aber ich möchte wissen, warum '{# attr.unitArray [# attr.counter.index]}' generiert Warnung und wenn gelöst werden kann –

+2

F: Warum? A: Weil 'javax' in den' struts.excludedPackageNames' steht. Kannst du deinen Code neu schreiben, um Werte in jstl-Tags zu erhalten und an "" zu übergeben. –

Antwort

1

Sie können den Wert der Statusvariablen in den Wertestapel einfügen und ihn anstelle des Statusindex des JSTL-Tags verwenden.

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

Oder das Gegenteil Manipulation verwenden, setzen Sie einfach die Aktion auf der Seite Kontext und seine Texteigenschaft in <c:out> verwenden. Ich habe diesen Ansatz nicht benutzt, aber Sie können es versuchen.