DisplayTag和Tiles

时间:2016-11-21 13:19:56

标签: java jsp tiles displaytag

我正在使用 DisplayTag 库构建一个表格。我需要在许多页面的多个表中共享一列,因此我尝试使用<display:column><display:table>内插入<tiles:insertAttribute>

    <display:table ....>       
        <tiles:insertAttribute name="attivoTh"/>    
    </display:table> 

 <definition name="attivoTh" template="/WEB-INF/template/default/th/attivoTh.jsp" />

这是我得到的错误:

 nov 21, 2016 2:08:08 PM org.apache.catalina.core.StandardWrapperValve invoke
 SEVERE: Servlet.service() for servlet [ds] in context with path [/Jeans2016] threw
 exception [Request processing failed; nested exception
 is org.apache.tiles.impl.CannotRenderException: ServletException including
 path '/WEB-INF/template/default/template1.jsp'.] with root cause
 Exception: [.ColumnTag] Tag "column" should ne nested in "table"

有人理解为什么吗?

1 个答案:

答案 0 :(得分:0)

您的显示表使用了一个集合。 在那个集合中你放置了对象。 如果许多不同的表使用相同的值/对象,则在集合服务器端提供该对象。 (您可以使用包装器)

对于你提供的对象Foo然后只是

;WITH CTE AS (SELECT
                    DENSE_RANK() OVER (Order by
                                    col1,
                                    col2,
                                    col3) SetID,                
                    COUNT(*) OVER (partition by
                                    col1,
                                    col2,
                                    col3) DupsInSet,
                    row_number() OVER (PARTITION BY
                                    col1,
                                    col2,
                                    col3
                                    ORDER BY                                    
                                    col4) RowInSet,
                    *
                FROM mytable)

    SELECT x.string1, a.*
    FROM CTE a
        CROSS APPLY(
                        SELECT col4
                        FROM CTE b
                        WHERE b.SetID = a.SetID
                        FOR XML PATH ('')
                    ) x (string1)
    WHERE a.DupsInSet > 1

或者,显示这些表的所有servlet都可以从基础servlet扩展,该servlet将该对象/值放入请求中并添加包含该数据的列:

<display:table ....>       
        <display:column property="foo.value" .../>    
</display:table>