簡體   English   中英

Struts2,轉換s:選擇列表以顯示Tag列

[英]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 DataTablesjQuery jqGrid ; 對於后者,還有一個插件( struts2-jquery-grid-plugin ),它可以幫助您在不知道語法的情況下使用網格,只需要知道struts2標簽。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM