使<s:checkboxlist>的选项在struts2 </s:checkboxlist>中垂直显示

时间:2011-06-21 09:11:08

标签: java struts2

*我需要我的复选框列表选项以垂直显示而不是默认的水平显示。我在名称模板的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'}"
      />

请告知我出错的地方。

5 个答案:

答案 0 :(得分:9)

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

  1. 您必须在src文件夹中创建目录模板

  2. 使用您要创建的模板名称创建一个文件夹(vertical-checkbox)

  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. <s:checkboxlist list="urlist" name="selectedValues" listKey="id" listValue="descrption" theme="vertical-checkbox"></s:checkboxlist>

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

答案 1 :(得分:7)

我尝试了这里提供的答案,但它没有像我希望的那样工作,我在列表上丢失了标签,而且其他格式也消失了。所以,我是通过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-attribute标签之后,内容状态为”添加换行符(“\ A”)并确保保留空格“。

答案 2 :(得分:2)

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

  1. 在应用程序的WEB-INF / classes文件夹中创建文件夹模板。
  2. 在WEB-INF / classes / template文件夹(或其他主题的其他文件夹)中创建简单文件夹。
  3. 从struts2-core.jar库复制文件checkboxlist.ftl(那个,位于jar存档中的简单主题文件夹中)。
  4. 在此标签字符串关闭后的此文件中(有关更多详细信息,请参阅链接):
  5. 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页面上,使用样式“vertical”来制作垂直列表方向:

答案 3 :(得分:0)

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

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

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

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

答案 4 :(得分:0)

看到这个网站: http://mikeski.net/site/node/16

基本上,你只需要:

  1. 打开文件checkboxlist.ftl
  2. 它将包含3行,中间行使用简单主题中的checkboxlist.ftl。评论说:

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

  4. 我做到了,它对我有用。它会在各自的行上显示您的复选框。