Отобразить подчиненное свойство в табличном теге (библиотека тегов, предоставленная Spring Roo) - PullRequest
0 голосов
/ 20 августа 2010

Я использую Spring Roo.Есть теги table:table и table:column.

Как отобразить подсвойство элементов наборов в таблице?

Простым способом это не работает:

<table:table data="${knowledgebase.concepts}" id="l_domain_Concept" path="/concepts" z="user-managed">
  <table:column id="c_domain_Concept_translations" property="defaultTranslation.name"  z="user-managed" />
</table:table>

Исключение:

Caused by: javax.el.PropertyNotFoundException: Property 'defaultTranslation.name' not found on type domain.data.Concept

Ответы [ 3 ]

1 голос
/ 27 августа 2010

Я изменил table.tagx, чтобы он мог использоваться со вспомогательными свойствами и возможностями преобразования Spring.

<c:forTokens items="${columnProperties}" delims="," var="column" varStatus="num">
<c:set var="prop" value="${ item }" />
    <c:forTokens items="${column}" delims="." var="subprop">
        <c:set var="prop" value="${ prop[subprop]}" />
    </c:forTokens>
<c:set var="columnMaxLength" value="${lengths[num.count - 1]}" scope="request"/>
 <td>
     <c:choose>
         <c:when test="${not convert}">
             <c:out value="${columnMaxLength lt 0 ? prop : fn:substring(prop, 0, columnMaxLength)}" />
         </c:when>
         <c:otherwise>
             <spring:eval expression="prop" />
     </c:otherwise>
     </c:choose>
 </td>

0 голосов
/ 30 декабря 2016

Вы можете редактировать файл сущности Concepts.java:

@Transient
public String getDefaultTranslationName(){
         return defaultTranslation.getName();
}

После того, как вы измените на:

<table:column id="c_domain_Concept_translations" property="DefaultTranslationName"  z="user-managed" />

Надежда может помочь вам!

0 голосов
/ 30 апреля 2013

Редактировать PROJECT/src/main/webapp/WEB-INF/tags/form/fields/table.tagx.В строке 78 вы должны увидеть <c:set var="columnDatePattern" value="${patterns[num.count-1]}" />.Поместите под эту строку следующий фрагмент кода:

<!-- Get the last descendant property -->
<c:set var="prop" value="${item}" />
<c:forTokens items="${column}" delims="." var="subprop">
    <c:if test="${not empty prop}">
        <c:set var="prop" value="${prop[subprop]}" />
    </c:if>
</c:forTokens>
<!-- Now under tag c:choose below, please change from "item[column]" into "prop" -->
<!-- // End of Get the last descendant property. -->

Не забудьте перейти с "item[column]" на "prop"Например, измененные строки должны быть:

<c:choose>
    <c:when test="${columnType eq 'date'}">
        <spring:escapeBody>
            <fmt:formatDate value="${prop}" pattern="${fn:escapeXml(columnDatePattern)}" var="colTxt" />
        </spring:escapeBody>
    </c:when>
    <c:when test="${columnType eq 'calendar'}">
        <spring:escapeBody>
            <fmt:formatDate value="${prop.time}" pattern="${fn:escapeXml(columnDatePattern)}" var="colTxt"/>
        </spring:escapeBody>
    </c:when>
    <c:otherwise>
        <c:set var="colTxt">
            <spring:eval expression="prop" htmlEscape="false" />
        </c:set>
    </c:otherwise>
</c:choose>
...