【问题标题】:Making the options of a <s:checkboxlist> display vertically in struts2使 <s:checkboxlist> 的选项在 struts2 中垂直显示
【发布时间】:2011-06-21 09:11:07
【问题描述】:

*我需要我的复选框列表选项垂直显示,而不是默认的水平显示。我在名称模板的 src 文件夹中创建了一个文件夹,并在另一个文件夹中创建了一个名为 vertical-checkbox 的文件夹,其中包含我修改后的 .ftl 文件自定义复选框列表。我无法显示自定义复选框 我在 JSP 中的代码是

  <s:checkboxlist theme="vertical-checkbox" label="Which of the following are states of India"
                            name="states"
                                list="#{'01':'January','02':'February','03':'March','04':'April',
    '05':'May'}"
      />

请指出我哪里出错了。

【问题讨论】:

    标签: java struts2


    【解决方案1】:

    通常struts2 中的struts checkboxlist 水平地调整复选框。在大多数应用程序中,我们希望垂直显示复选框(逐行)。为了将其对齐为垂直,我们必须执行以下操作

    1. 你必须在你的 src 文件夹中创建一个目录模板

    2. 使用您要创建的模板的名称创建一个文件夹(垂直复选框)

    3. 把struts-2.1.6/src/core/src/main/resources/template/simple/checkboxlist.ftl文件复制到这个目录下这个文件内容如下。在您必须根据需要或喜欢此链接放置
      标记之前: http://codeglobe.blogspot.com/2009/09/struts2-align-check-box-vertical.html

    4. &lt;s:checkboxlist list="urlist" name="selectedValues" listKey="id" listValue="descrption" theme="vertical-checkbox"&gt;&lt;/s:checkboxlist&gt;

    这将为您提供一个垂直复选框列表。唯一的区别是这里你必须指定主题,该主题与你在项目的 src 文件夹中的模板目录中创建的目录相同。

    【讨论】:

    • 我设法创建了自己的模板,并且可以按照自己的方式更改 checkboxlist.ftl。所以这个答案确实有效。为了使我的自定义模板正常工作,我唯一要做的事情(我看到没有提到)就是在模板目录中包含 checkboxlist.ftl 中引用的文件,例如:
    【解决方案2】:

    我尝试了此处提供的答案,但它没有像我希望的那样工作,我丢失了列表中的标签,并且其他格式也消失了。所以,我是通过 css 做到的:

    <s:checkboxlist
      name="myCheckboxList"
      ... />
    

    这会导致像这样的 html 元素:

    <input type="checkbox" id="myCheckboxList-1" ... />
    <label for="myCheckboxList-1" ...
    <input type="checkbox" id="myCheckboxList-2" ... />
    <label for="myCheckboxList-2" ... 
    

    使复选框垂直的 CSS 如下所示:

    label[for*=myCheckboxList-]:after {
        content:"\A"; white-space:pre;
    }
    

    选择器声明“在每个带有包含 'myCheckboxList-' 的 for 属性的标签之后”,内容状态“添加换行符 (“\A”) 并确保保留空格”。

    【讨论】:

    • 这是一个天才的解决方案。工作完美。只需 3 行即可插入到我的应用程序的 css 文件中。谢谢!
    • 这个解决方案的代码比其他发布的解决方案少得多,工作量也少得多。太棒了!
    【解决方案3】:

    你可以在这里看到:http://klyuty.blogspot.it/2011/03/creating-vertical-orientation-for.html 我认为这是最简单明了的方法。

    1. 在应用程序的 WEB-INF/classes 文件夹中创建文件夹模板。
    2. 在 WEB-INF/classes/template 文件夹(或其他主题的另一个文件夹)中创建文件夹 simple。
    3. 从 struts2-core.jar 库中复制文件 checkboxlist.ftl(该库位于 jar 存档中的简单主题文件夹中)。
    4. 在此标签字符串关闭后的文件中(更多详细信息请参见链接):
    for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemValue?html}

    和字符串之前:

    </@s.iterator>
    

    添加这个(在两者之间):

    <#if parameters.cssStyle?exists>
    <#if "${parameters.cssStyle?html}" == "vertical">
    <br/><#rt/>
    </#if>
    </#if>
    

    在这段代码中,“vertical”是 css 样式,我们将在 strust2 页面中使用,
    是列表中两个复选框之间的分隔符。

    1. 在带有 s:checkboxlist 的 struts2 页面上,使用样式“垂直”来制作垂直列表方向:

    【讨论】:

      【解决方案4】:

      如果没有看到修改后的 .ftl 文件,很难判断哪里出了问题,但一般的解决方案是:

      • 将 checkboxlist.ftl 复制到新目录(例如 .../template)
      • 在复制的文件中,在 checkboxLabel 类和迭代器之间添加一个断点:

        <label ... class="checkboxLabel">
        <br>
        </@s.iterator>
        
      • 引用/包含新的 .../template/checkboxlist.ftl 以覆盖标准的 checkboxlist.ftl。

      如果我没记错的话,上面的内容也可以用 CSS 完成,但我忘记了细节。

      【讨论】:

      【解决方案5】:

      查看此网站: http://mikeski.net/site/node/16

      基本上,您只需要:

      1. 打开文件 checkboxlist.ftl
      2. 它将包含 3 行,中间行使用来自简单主题的 checkboxlist.ftl。注释下面的行:

        <#include "/${parameters.templateDir}/simple/checkboxlist.ftl" />
        
      3. 然后复制上面网址中引用的freemarker代码。

      我做到了,它对我有用。它会在单独的行上显示您的复选框。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-29
        • 1970-01-01
        • 2023-03-26
        • 2021-04-13
        相关资源
        最近更新 更多