Struts7 debug-tag with rendering problem
Ute Kaiser <[email protected]> Thu, 27 Mar 2025 09:24:35 +0000
| Newsgroups | gmane.comp.jakarta.struts.user |
|---|---|
| Message-ID | <trinity-3b2682be-7e13-462f-aac5-19dd5f58e330-1743067475104@trinity-msg-rest-webde-webde-live-58ddd584d4-mw2l8> |
Hi,
using <s:debug/> in jsp causes my XML-Output to crash.
I thought I needed it because my jsp does not display the expected output and therefore I wanted to inspect the value stack.
Any help appreciated to use this tag.
Best regards Ute
XML-Verarbeitungsfehler: Nicht übereinstimmendes Tag. Erwartet: </table>.
Adresse: http://myURL
Zeile Nr. 46, Spalte 7:
</tr>
------^
Translation: XML-error: not matching tag. expected: </table>
Browser source shows:
<h2>Struts ValueStack Debug</h2>
<br>
<h3>Value Stack Contents</h3>
<table class="debugTable">
<tr><th>Object</th><th>Property Name</th><th>Property Value</th><th>Property Class</th></tr>
<tr>
<td rowspan="20">xx.yyy.zzzz.MyAction</td>
<td style="background-color:#CCCCCC;">container</td>
<td style="background-color:#CCCCCC;">There is no read method for container</td>
<td style="background-color:#CCCCCC;">class java.lang.String</td>
</tr>
<td style="background-color:#BBBBBB;">actionErrors</td>
<td style="background-color:#BBBBBB;">[]</td>
<td style="background-color:#BBBBBB;">class java.util.LinkedList</td>
</tr>
I found \struts-7.0.3\src\core\src\main\resources\template\simple\debug.ftl, but I am not familiar with #list to fully understand.
<a href="#" id="toggle-button">[Debug]</a>
<div style="display:none" id="<#if attributes.id??>${attributes.id}<#else>debug</#if>">
<h2>Struts ValueStack Debug</h2>
<br>
<h3>Value Stack Contents</h3>
<table class="debugTable">
<tr><th>Object</th><th>Property Name</th><th>Property Value</th><th>Property Class</th></tr>
<#assign index=1>
<#list attributes.stackValues as stackObject>
<tr>
<td rowspan="${stackObject.value.size()}">${stackObject.key}</td>
<#assign renderRow=false>
<#list stackObject.value.keySet() as propertyName>
<#if renderRow==true></tr><tr><#else> <#assign renderRow=false> </#if>
<td style="background-color:<#if (index % 2) == 0>#BBBBBB<#else>#CCCCCC</#if>;">${propertyName}</td>
<td style="background-color:<#if (index % 2) == 0>#BBBBBB<#else>#CCCCCC</#if>;"><#if stackObject.value.get(propertyName)??>${stackObject.value.get(propertyName).toString()}<#else>null</#if></td>
<td style="background-color:<#if (index % 2) == 0>#BBBBBB<#else>#CCCCCC</#if>;"><#if stackObject.value.get(propertyName)??>${stackObject.value.get(propertyName).class}<#else>null</#if></td>
</tr>
<#assign index= index + 1>
</#list>
</#list>
</table>