`

在 <#list>中实现动态换行

阅读更多

1.代码

<table width="100%" height="0%" border="0">
    <tr align="center" valign="middle">
        <td height="46%" colspan="6" class="td_head">

           <B>角色名称&nbsp;</B>
        </td>
    </tr>
    <tr>
        <#list roles as role>
            <td nowrap align='right' colspan='1' rowspan='1' height='25'>

               <!--  被选择的 checkbox -->
              
<#list bean.roles as userRole>

                   <!-- 不加此句 <#assign checked="checked"> 被执行后 checked的值将一直为"checked" -->  
                   <#assign checked="">  

                   <#if role.id==userRole.id>
                        <#assign checked="checked">
                        <#break/>
                   </#if>
               </#list> 
               

            <input name="roleid" type="checkbox" userid="roleid" value="${role.id!}" ${checked!}>
            </td>
            <td nowrap align='left' colspan='1' rowspan='1' height='25'>
                ${role.rolename!}
            </td>

            <!--  每显示三个对象换一行  -->
            <#if (role_index != 0 && role_index % 2 == 0)>
               </tr>
               <tr>
            </#if>

        </#list>
    </tr>
</table>

 

2.例图



 

 

 

  • 大小: 50.7 KB
分享到:
评论
4 楼 bcw104 2009-04-15  
QuakeWang 写道
对于这种将某个集合分隔为N,然后进行遍历的需求,你可以使用freemarker提供的chunk:
<#list seq?chunk(3) as row>
  <tr>
    <#list row as cell><td>${cell}</td></#list>
  </tr>
</#list>


不过这样使用tr/td进行换行排版,是不被推荐的,你完全可以采用CSS指定每个选择框的长度为1/3,设置float/block就可以了

此楼正解.
3 楼 dolphin_ygj 2009-02-03  
Quake Wang 写道

对于这种将某个集合分隔为N,然后进行遍历的需求,你可以使用freemarker提供的chunk:


Freemarker代码

&lt;#list&nbsp;seq?chunk(3)&nbsp;as&nbsp;row&gt; &nbsp;&nbsp;
&nbsp;&nbsp;&lt;tr&gt; &nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;&lt;#list&nbsp;row&nbsp;as&nbsp;cell&gt;&lt;td&gt;${cell}&lt;/td&gt;&lt;/#list&gt; &nbsp;&nbsp;
&nbsp;&nbsp;&lt;/tr&gt; &nbsp;&nbsp;
&lt;/#list&gt;&nbsp;&nbsp;&lt;#list seq?chunk(3) as row&gt;
  &lt;tr&gt;
    &lt;#list row as cell&gt;&lt;td&gt;${cell}&lt;/td&gt;&lt;/#list&gt;
  &lt;/tr&gt;
&lt;/#list&gt;
不过这样使用tr/td进行换行排版,是不被推荐的,你完全可以采用CSS指定每个选择框的长度为1/3,设置float/block就可以了


学习了,谢谢
2 楼 QuakeWang 2009-02-03  
对于这种将某个集合分隔为N,然后进行遍历的需求,你可以使用freemarker提供的chunk:
<#list seq?chunk(3) as row>
  <tr>
    <#list row as cell><td>${cell}</td></#list>
  </tr>
</#list>


不过这样使用tr/td进行换行排版,是不被推荐的,你完全可以采用CSS指定每个选择框的长度为1/3,设置float/block就可以了
1 楼 duan_cloud 2009-02-03  
以前弄过一个换行,比较笨的方法,楼主看行不(主要是拼凑tr td)

<table class="table-form" style="width:100%;text-align:center" cellspacing="2" cellpadding="1">
            <tr>
                <td>年份</td>
                <td width="246" class="four-content">
                    <select name="year" class="common-select">
                    </select>
                </td>
                <td colspan="2"></td>
            </tr>
            <tr>
                <td>起始月份</td>
                <td width="246" class="four-content">
                    <select name="startMonth" class="common-select">
                        <#if (monthList)?exists&&monthList.size()!=0>
                            <#list monthList as month>
                                <option value=${(month)?default('')}>${(month)?default('')}</option>
                            </#list>
                        </#if>
                    </select>
                </td>
                <td>终止月份</td>
                <td width="246" class="four-content">
                    <select name="endMonth" class="common-select">
                        <#if (monthList)?exists&&monthList.size()!=0>
                            <#list monthList as month>
                                <option value=${(month)?default('')}>${(month)?default('')}</option>
                            </#list>
                        </#if>
                    </select>
                </td>
            </tr>
            <tr>
                <td>机关</td>
                <td class="two-content" colspan="3" width="100%">
                    <div style="width:100%">
                        <#if (orgList)?exists&&orgList.size()!=0>
                            <table>
                                <#list orgList as area>
                                    <#if (area_index)%4==0>
                                        <tr>
                                    </#if>
                                    <td style="text-align:left">
                                        <input name="orgCode" type="checkbox" style="width:18px;"
                                               nameCoyp="${(area.areaName)?default('')}"
                                               value="${(area.areaCode)?default('')}">${(area.areaName)?default('')}
                                    </td>
                                    <#if (area_index)%4==3>
                                        <tr>
                                    </#if>
                                </#list>
                            </table>
                        </#if>
                    </div>
                    <br>
                    <table>
                        <tr>
                            <td style="width:26%;text-align:left"><input type="checkbox" name="control"
                                                                         style="width:18px;" value="true"
                                                                         onclick="setSelectAll(this)">全选
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>

相关推荐

    freemark例子

    通过理解并熟练运用这些基本概念,你可以在FreeMarker模板中创建复杂且动态的视图层,实现与后端数据的有效结合。FreeMarker还提供了许多其他功能,如宏定义、函数调用、表达式运算等,这使得它成为构建高效Web应用...

    freemarker生成静态html示例

    Freemarker是一个强大的模板引擎,常用于Web应用中动态生成HTML或其他类型的文本文件。它采用声明式编程方式,使得开发者可以专注于数据模型,而不用关心如何呈现这些数据。本示例项目是在Eclipse环境中创建的一个...

    struts2的checkboxlist标签换行

    例如,在`customcheckboxlist.ftl`中,可以在每个`&lt;s:checkbox&gt;`标签后插入`&lt;br&gt;`标签来实现换行。 ```ftl &lt;#assign checkbox = "checkbox" /&gt; &lt;#if checkbox?has_content&gt; &lt;#list checkbox as item&gt; &lt;s:...

    Freemarker中文手册(2.3.16)

    - **继承**:使用`&lt;#macro&gt;`定义宏,实现模板部分代码的复用。 - **指令参数**:允许向宏传递参数,增加模板的灵活性。 6. **国际化与本地化** - 使用`&lt;#t&gt;`指令和`&lt;#lt&gt;`标签处理多语言环境下的文本。 - `...

    freemarker生成复杂excel,带换行

    要实现换行,可以使用Excel的换行符`\n`。在Freemarker中,如果`item.content`是一个字符串,它可能包含`\n`来表示换行。当Freemarker渲染模板时,这些`\n`会被转换为实际的换行符。 例如,一个数据对象可能看起来...

    freemark教程

    6. 内联文本:`&lt;#t&gt;` 或 `${''}` 用于在表达式之间插入空格或换行,防止被自动合并。 7. 模板继承:`&lt;#assign&gt;` 和 `&lt;#import&gt;` 分别用于变量赋值和导入其他模板。 8. 动态包含:`&lt;#include&gt;` 用于包含其他模板文件...

    新手学习DIV+CSS难点之经验总结.pdf

    图片垂直居中显示可以通过在&lt;img&gt;标签中加入align="absmiddle"实现。 四、清除浮动 清除浮动是DIV+CSS中非常重要的一步,如果在同一行上有几个DIV并列显示,那么必须在其中加入清除浮动代码。如果在一行上只是一个...

    C#编程经验技巧宝典

    106&lt;br&gt;&lt;br&gt;0175 如何检索指定条件数组中的元素 107&lt;br&gt;&lt;br&gt;0176 如何动态改变数组长度 108&lt;br&gt;&lt;br&gt;0177 如何反转数组中元素的顺序 108&lt;br&gt;&lt;br&gt;0178 如何排序数组中的元素的顺序 109&lt;br&gt;&lt;br&gt;0179 如何创建...

    listctrl自动换行.docx

    这种方法不需要重写`ListCtrl`类,而是在原有基础上通过调用一个自定义函数来实现自动换行的功能。 ##### 1. 函数定义 ```cpp bool CAccdataDlg::AdjustColumnWidth(CListCtrl* m_acclist) { CHeaderCtrl* ...

    HTML语法大全(打印版)

    - `&lt;br&gt;` 实现单行换行,`&lt;nobr&gt;` 区域内禁止自动换行。 - `&lt;p&gt;` 用于创建段落,`&lt;center&gt;` 使内容居中。 5. **连结格式**: - `&lt;a&gt;` 标签定义超链接,`href` 属性指定链接目标。 - `target` 属性控制链接打开...

    freemarker格式化缩进文本或include指令

    通过`&lt;#include&gt;`,开发者可以将通用的部分(如头部、底部导航、侧边栏等)抽取到单独的模板中,然后在多个页面中进行引用,保持代码整洁并简化维护。 包含模板时,还可以使用变量来动态决定包含哪个模板,例如: ...

    CSS中的ul与li样式详解.docx

    &lt;li&gt;这里是使用 list-style-position 属性值为 outside 的示例。请注意换行以后项目符号的位置。&lt;/li&gt; &lt;li&gt;这里是列表内容&lt;/li&gt; &lt;li&gt;这里是列表内容&lt;/li&gt; &lt;/ul&gt; 再来看一下属性值为 inside 的样式: li { list-...

    (原创)struts标签之checkboxlist选中值并换行处理

    本文将详细介绍如何利用Struts的`&lt;s:checkboxlist&gt;` 标签实现默认选中某些选项以及如何在显示时自动换行。 #### 二、CheckboxBean实体类设计 为了更好地理解`&lt;s:checkboxlist&gt;` 标签的使用,我们首先定义一个简单...

    html培训教程

    2. **跳转到页面内的位置**:使用锚点`&lt;a name="name"&gt;&lt;/a&gt;`定位页面内部的位置,并通过`href="#name"`实现跳转。 ```html &lt;a href="#section1"&gt;Jump to Section 1&lt;/a&gt; &lt;a name="section1"&gt;&lt;/a&gt; &lt;p&gt;Section 1 ...

    纯数字或者字母不换行解决方法

    在这个例子中,通过设置`.number-list-item`类的CSS样式,使得列表项中的长数字或字母串能够在容器宽度限制内自动换行,从而保证了良好的布局效果。 #### 四、注意事项 1. **兼容性**:上述CSS属性在现代浏览器中...

    VB编程资源大全(源码 控制)

    kenjLV1.zip &lt;br&gt;ListView的API效果演示(10KB)&lt;br&gt;32,txtsrch.zip &lt;br&gt;在Text中实现快速增量查询(4KB)&lt;br&gt;33,TracBar.zip &lt;br&gt;滚动条模块,与 VB 的滚动条比较,该模块支持动态生成, 支持触发消息(7KB)&lt;br&gt;34,...

    带炫酷鼠标滑过特效的垂直导航菜单

    每个菜单项通常是一个`&lt;li&gt;`元素,包裹在`&lt;ul&gt;`列表中。例如: ```html &lt;ul class="nav-menu"&gt; &lt;li&gt;&lt;a href="#"&gt;首页&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;关于我们&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;服务&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href=...

    巧用struts标签之checkboxlist选中默认值换行处理

    在Struts框架中,`&lt;s:checkboxlist&gt;`是一个非常实用的标签,用于在HTML表单中创建一组复选框,通常用于用户选择多个选项。本文将深入探讨如何巧妙地处理`checkboxlist`的默认选中值以及实现换行显示。 首先,我们...

    css+ul设计的多级导航菜单

    在多级导航菜单中,我们可以利用嵌套的`&lt;ul&gt;`来构建层级结构。例如: ```html &lt;ul class="menu"&gt; &lt;li&gt;&lt;a href="#"&gt;菜单1&lt;/a&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="#"&gt;子菜单1.1&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="#"&gt;子菜单1.2&lt;/a&gt;&lt;/li&gt; &lt;/...

Global site tag (gtag.js) - Google Analytics