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