Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1216
  • Last Modified:

NESTING <LOGIC:ITERATE> <LOGIC:PRESENT> TAGS


I have a page that uses a number of tables. I also have a style sheet in that jsp page. I have one class that show's items on screen but not on print preview, and another that shows items on print preview but not the screen. I am getting an iterator error or some sort, and others times, no error at all: it simply doesn't work.

I have the following

<LOGIC:PRESENT NAME="class1">
<LOGIC:PRESENT NAME="class2">
<TABLE CLASS="NOPRINT">
<LOGIC:iterate id="class2" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='class2' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>
</LOGIC:PRESENT>
</LOGIC:PRESENT>


<LOGIC:PRESENT NAME="class1">
<LOGIC:PRESENT NAME="class2">
<TABLE CLASS="NOPRINT">
<LOGIC:iterate id="class2" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='class2' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>
</LOGIC:PRESENT>
</LOGIC:PRESENT>

The second section doesn't work at all. I don't know how to reset the iterator. I absolutely cannot use any <% %> tags either. I have tried splitting the sections like I did above and I have tried putting them together as follows:

<LOGIC:PRESENT NAME="class1">
<LOGIC:PRESENT NAME="class2">

<TABLE CLASS="NOPRINT">
<LOGIC:iterate id="class2" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='class2' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>

<TABLE CLASS="NOPRINT">
<LOGIC:iterate id="class2" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='class2' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>

</LOGIC:PRESENT>
</LOGIC:PRESENT>

I have checked the code to make sure there isn't another master <LOGIC:PRESENT> tag surrounding both the NOPRINT and NOSHOW sections. There isn't one. The only tag that encompasses both of these sections is the <BODY></BODY> tag, which I would think is appropriate.

Please help. I need a solution ASAP. Also, I don't want to duplicate objects in the session. I would really like to reuse the same object ( so I don't have to use something like classB1 or classB2 ).

Thanks in advance. Will up points depending on the promptness and completeness of solution.
0
jbaisden
Asked:
jbaisden
  • 4
  • 2
1 Solution
 
jbaisdenAuthor Commented:
Correction: in the above listed...the code should look like this:

<LOGIC:PRESENT NAME="class1">
<LOGIC:PRESENT NAME="class2">
<TABLE CLASS="NOPRINT">
<LOGIC:iterate id="class2" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='class2' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>
</LOGIC:PRESENT>
</LOGIC:PRESENT>


<LOGIC:PRESENT NAME="class1">
<LOGIC:PRESENT NAME="class2">
<TABLE CLASS="NOSHOW">
<LOGIC:iterate id="class2" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='class2' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>
</LOGIC:PRESENT>
</LOGIC:PRESENT>

and the second set of code should be


<LOGIC:PRESENT NAME="class1">
<LOGIC:PRESENT NAME="class2">

<TABLE CLASS="NOPRINT">
<LOGIC:iterate id="class2" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='class2' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>

<TABLE CLASS="NOPRINT">
<LOGIC:iterate id="class2" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='class2' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>

</LOGIC:PRESENT>
</LOGIC:PRESENT>

For the record the syle sheet is in the header. It is as follows:

<STYLE media="print">.noprint
{
      DISPLAY: none;
      
}</STYLE>
<STYLE media="screen">.noshow
{
      DISPLAY: none;
      
}</STYLE>

Hope that makes it more clear.
0
 
sompol_kiatkamolchaiCommented:
I think your problem is how to reset index in the next iteration.

I would like you to test this option

<LOGIC:iterate id="class2" name="class2" indexId="ind" offset="0">


0
 
jbaisdenAuthor Commented:
I have made that modification. The error I am receiving is: Error 500: Cannot create iterator for this collection. Will continue testing.



0
Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
jbaisdenAuthor Commented:
I still have not made any progress. Any help would be appreciated.
0
 
TimYatesCommented:
what happens if you change the ID to something other than the name of the collection?

<LOGIC:PRESENT NAME="class1">
<LOGIC:PRESENT NAME="class2">

<TABLE CLASS="NOPRINT">
<LOGIC:iterate id="it1" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='it1' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>

<TABLE CLASS="NOPRINT">
<LOGIC:iterate id="it2" name="class2" indexId="ind">
   <TR>
   <TD>
            <bean:write name='it2' property='school'/>
    </TD>
   </TR>
</LOGIC:ITERATE>
</TABLE>

</LOGIC:PRESENT>
</LOGIC:PRESENT>
0
 
jbaisdenAuthor Commented:
That did it Tim! Thanks!
0
 
TimYatesCommented:
:-)

Good luck!!

Tim
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 4
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now