Pergunta

Recentemente, comecei a usar a biblioteca DisplayTag e encontrei um problema.

Estou tentando criar uma coluna que permitirá que o usuário vincule a outra página se essa outra página realmente tiver algo a ser exibido. Eu tenho a configuração para que sempre haja um hiperlink lá, mas estou tendo problemas com o condicional. Eu tenho uma configuração variável que estará vazia ou outra coisa (geralmente sucesso). Isso é o que eu tentei até agora ...

<display:table uid="log" pagesize="20" defaultsort="2" name="logs" class="displayTag" sort="list" requestURI="savedReports.action" >  
                <display:column property="reportName" titleKey="label.report" <%if(!((ReportLog)pageContext.getAttribute("log")).getStatus().equals("empty")){ %>href="pdfReportViewer.action" paramId="reportLogId" paramProperty="id" <%} %> sortable="true" headerClass="sortable"></display:column>

Este método tenta usar o JSP no meio da tag de exibição: coluna e acabo obtendo um erro de exibição sem terminação: tag da coluna.

Em seguida, tentei isso ...

<display:table uid="log" pagesize="20" defaultsort="2" name="logs" class="displayTag" sort="list" requestURI="savedReports.action" >  
                <%if(((ReportLog)pageContext.getAttribute("log")).getStatus().equals("empty")){ %>         
                    <display:column property="reportName" titleKey="label.report" sortable="true" headerClass="sortable"/>   
                <%}else{ %>
                    <display:column property="reportName" titleKey="label.report" href="pdfReportViewer.action" paramId="reportLogId" paramProperty="id" sortable="true" headerClass="sortable"/>
                <%}%>  

Isso não deu nenhum erro, mas toda linha deixou de lado a coluna Hyperlink. Testei para ver se isso foi um erro no meu condicional, mas, infelizmente, não foi, criando uma coluna dummy e exibindo o resultado do condicional, e recebo uma variedade adorável de trues e falsas.

Estou sem saber por que o segundo método não funciona, então espero que alguém aqui tenha uma experiência melhor com o DisplayTags!

Obrigado!

Foi útil?

Solução 2

Acabei fazendo isso com um pequeno JSP ... código abaixo ...

<display:column titleKey="label.view" sortable="false" headerClass="sortable">
    <%if(!((ReportLog)pageContext.getAttribute("log")).getStatus().equals("empty")){ %>
    <a href="pdfReportViewer.action?reportLogId<%=((ReportLog)pageContext.getAttribute("log")).getId()%>">View</a>
    <%} %>
</display:column>

Outras dicas

Um pouco feio, do topo da minha cabeça:

<display:column property="reportName" titleKey="label.report" 
    href="${log.status != 'empty' ? pdfReportViewer.action : null}"
    paramId="${log.status != 'empty' ? reportLogId : null}"
    paramProperty="${log.status != 'empty' ? 'id' : null}"
    sortable="true" headerClass="sortable"></display:column>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top