user1076951
user1076951

Reputation: 1

Struts2 : Double Iteration over Parameters does not work?

Hello I am a young Software developer, and I struggled the last 5 days with my code.

Here is my code in JSP:

<s:iterator value="getListeDanach()" status="stat">
  <li>
    <s:url id="URL_ListeDanach" action="uebersicht_umblaettern">
      <s:param name="angeklickteSeitenzahl" value="getListeDanach()[#stat.index]" />

      <s:bean name="org.apache.struts2.util.Counter" var="counter">
        <s:param name="last" value="3" />
      </s:bean>

      <s:iterator value="#counter" status="stat1">
        <s:property value="#stat1.index" />
        <s:param name="%{optionaleParamName4}" value="#optionaleParamValue4" />
      </s:iterator>
    </s:url>

    <s:a href="%{URL_ListeDanach}" cssClass="naviTab">
      <s:property value="getListeDanach()[#stat.index]" />
    </s:a>
  </li>
</s:iterator>

My problem is, the first Iteration works great but the 2nd Iteration works half. In the 2nd case the property works, but the param doesn´t work! Al Variables are available. If i take the param Tag of the 2nd Iteration and place it in the first, it works great! But that isn´t what I want.

Upvotes: 0

Views: 832

Answers (2)

user1076951
user1076951

Reputation: 1

In the bean i have a loop with 3 "rounds", in the 2nd iterator i use the var=counter to iterate three times over the property and over the dynamic parameter.

The property shows in HTMl in every loop of the first iterator this result : 0 1 2;
This is how it should work(the property is just there, to test the functionality of the 2nd itarator.)
But in the 2nd case, the parameter-Tag is fully ignored or something like that. For those who want to know the logic behind the code. It is a side navigation bar. listeDav or = list behind the actual number, and listeDanach= list after the actual number. 1 2 3 4 [5] 6 7 8 9.... When the param Tag in the 2nd itarator functions well, I would make the param tag dynamically with the iterated index.

SO in short, what I want is: Every time the first Iterator has his loop, I want to create dynamic parameters. This parameters are defined in the JSP before and are fully supported! I want to use the index "#stat1.index" to make it work.

Something like this : s:param name="%{optionaleParamName[#stat1.index]}" value="#optionaleParamValue[#stat1.index]" />.....
i have already defined the String behind "#optionaleParamValue[0], behind #optionaleParamValue[1] and behind #optionaleParamValue[2] and soo on... ... and all this is for reusing the actual JSP.

As you can mention, a side navigation bar, can be used in many other cases in the programm.

Greetings

Upvotes: 0

Dave Newton
Dave Newton

Reputation: 160271

This is not an answer.

Here's the JSP, cleaned up, and using more S2 functionality. It was impossible to read the original.

<s:iterator value="listeDanach" status="stat" var="outerItem">
  <li>
    <s:url id="URL_ListeDanach" action="child">
      <s:param name="angeklickteSeitenzahl" value="outerItem" />

<%-- What are you trying to do here? --%> 
      <s:bean name="org.apache.struts2.util.Counter" var="counter">
        <s:param name="last" value="3" />
      </s:bean>

<%-- What are you trying to do here? There's nothing to iterate over. --%>
     <s:iterator value="#counter" status="stat1">
        <s:property value="#stat1.index" />
        <s:param name="%{optionaleParamName4}" value="#optionaleParamValue4" />
      </s:iterator>
    </s:url>

    <s:a href="%{URL_ListeDanach}">
      <s:property value="outerItem" />
    </s:a>
  </li>
</s:iterator>

Upvotes: 1

Related Questions