我在jsp中使用标签的表有以下代码,看起来非常简单。然而,由于一些奇怪的原因,我使用的那种根本不起作用,并且对我造成各种头痛。
jsp表代码:
<display:table name="searchResult.FormList" class="display" id="forms" keepStatus="true"
export="true" pagesize="500" sort="list" defaultSort="2" defaultOrder="ascending"
requestURI="searchResult.htm?paging=true">
<display:column title="Select"><input type="checkbox" name="selForm" value="${forms.objectId}"/>"/></display:column>
<display:column title="Form Name" sortable="true" headerClass="sortable"><a href="javascript:onclick=
downloadForm('${session.userId}','${forms.objectId}','${forms.objectName}'/></a>
<c:out value="${forms.objectName}"/></display:column>
现在,给定表和列,我希望表结果按第二列排序 - 它从结果对象表单中显示objectName。然而,这种情况并非如此。不知何故,排序根本不起作用。默认排序是随意的(A,D,E,B,C而不是A,B,C,D,E),当我们尝试从列中手动排序时,排序不再正确。 forms.objectName始终具有字母表。
我尝试了几件事。其中一个是(对于第二列,其他一切都相同):
<display:column property="objectName" title="Form Name" sortable="true" headerClass="sortable"/>
当我这样做时,表格填充,并且毫不奇怪,表格被第二列完美排序(A,B,C,D,E符合预期)。但是,问题是这些没有超链接,因此我不能使用它。
我试过的另一件事是第二栏:
<display:column property="objectName" title="Form Name" sortable="true" headerClass="sortable" href="javascript:onclick=
downloadForm('${session.userId}','${forms.objectId}','${forms.objectName}')"/>
同样,这将通过第二列(A,B,C,D,E)完美地对表进行排序。但是,downloadForm方法的参数来自表的最后一行,即例如,如果搜索表中有10行,则第二列链接将获得forms.objectId&amp;所有10行的最后一行中的forms.objectName。因此,我也不能使用它。
我希望你的问题很明确。任何帮助都非常感谢。如果您需要进一步说明,请与我们联系。感谢。
答案 0 :(得分:0)
可以尝试:
<display:column title="Form Name" sortable="true" headerClass="sortable" sortName="objectName">
<a href="javascript:onclick=downloadForm('${session.userId}','${forms.objectId}','${forms.objectName}'/></a>
<c:out value="${forms.objectName}"/>
<display:column>
与您粘贴的第一个代码完全相同,但将属性sortName="objectName"
添加到display:column
答案 1 :(得分:0)
首先,你需要指定sortProperty,因为displayTag不能神奇地计算你想要对'name'属性进行排序。
从标记库参考文档:
sortProperty :父表标记中指定的bean中的属性名称(通过“name”属性)将用于排序 列中的值。 填充柱体时可以使用此选项 或使用装饰器,列应按未修饰的值排序。
<display:column title="Form Name" sortable="true" headerClass="sortable" sortProperty="name" />