[英]Struts2, convert s:select list to display Tag column
我在jsp中有以下選擇列表:
<td>
<s:select list = "models"
listValue = "modelName"
listKey = "modelId"
multiple = "true"
name = "models" />
</td>
我選擇使用display Tag
庫來實現分頁,因此我想在顯示列中轉換它並從列表中顯示一個或多個模型。 我怎樣才能做到這一點? 下面是我的顯示表和其他列:
<display:table name = "cars"
requestURI = "/listCar.action"
pagesize = "10">
<display:column property = "name" title = "name" />
<display:column titleKey = "models" >
<!--------------model list?-------------->
</display:column>
<display:column property = "year" title = "year" />
</display:table>
首先,您需要使DisplayTag在您可以訪問的上下文中推送值:
由表創建的隱式對象
如果添加了id
屬性,則表標記會使頁面上下文中對應於給定行的對象可用,因此您可以在scriptlet代碼或其他標記中使用它。 表標記公開的另一個隱式對象是行號,名為id_rowNum
。這些對象在頁面范圍中保存為屬性(您可以使用
pageContext.getAttribute("id")
)訪問它。 它們也被定義為嵌套變量(可使用<%=id%>
),但前提是id atribute的值不是運行時表達式。 獲取值的首選方法是始終使用pageContext.getAttribute()
。如果未指定id屬性,則表標記不會將任何對象添加到pageContext
然后,您需要訪問該上下文。 在Struts2中, pageContext
可以通過#attr
:
Struts 2命名對象 :
#attr['foo']
或#attr.foo
訪問
PageContext
如果可用),否則分別搜索request
/session
/application
所以代碼是:
<display:table id = "currentRowInPageContext"
name = "cars"
requestURI = "/listCar.action"
pagesize = "10">
<display:column property = "name" title = "name" />
<display:column titleKey = "models" >
<s:select list = "%{#attr.currentRowInPageContext.models}"
listValue = "modelName"
listKey = "modelId"
multiple = "true"
name = "models" />
</display:column>
<display:column property = "year" title = "year" />
</display:table>
然而,現在有比DisplayTag更好的選擇,例如jQuery DataTables和jQuery jqGrid ; 對於后者,還有一個插件( struts2-jquery-grid-plugin ),它可以幫助您在不知道語法的情況下使用網格,只需要知道struts2標簽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.