使用JSP的条件列

时间:2009-12-18 17:58:43

标签: jsp struts2 displaytag

我最近开始使用DisplayTag库,但我遇到了一个问题。

我正在尝试创建一个列,允许用户链接到另一个页面,如果该其他页面实际上有某些内容要显示。我有它的设置,所以总是有一个超链接,但我有条件的问题。我有一个变量设置,它将是空的或其他东西(通常是成功的)。这是我到目前为止所尝试的......

<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>

此方法尝试在display:column标签的中间使用jsp,我最终得到一个未终止的显示:列标记错误。

接下来我尝试了这个......

<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"/>
                <%}%>  

这没有抛出任何错误,但是每一行默认为超链接列。我测试了这是否是我的条件中的错误,但唉不是,创建一个虚拟列并显示条件的结果,我得到了一个可爱的各种各样的真实和虚假。

我不知道为什么第二种方法不起作用所以我希望这里有人有更好的displaytags经验!

谢谢!

2 个答案:

答案 0 :(得分:2)

有点难看,从我的头顶:

<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>

答案 1 :(得分:1)

我最终使用了一些jsp ......下面的代码......

<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>