*我需要我的复选框列表选项以垂直显示而不是默认的水平显示。我在名称模板的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'}"
/>
请告知我出错的地方。
答案 0 :(得分:9)
通常,struts2中的struts checkboxlist会水平显示复选框。在大多数应用程序中,我们希望垂直显示复选框(逐行)。为了将其对齐为垂直,我们必须执行以下操作
您必须在src文件夹中创建目录模板
使用您要创建的模板名称创建一个文件夹(vertical-checkbox)
将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
<s:checkboxlist list="urlist" name="selectedValues" listKey="id" listValue="descrption" theme="vertical-checkbox"></s:checkboxlist>
这将为您提供一个垂直复选框列表。唯一的区别是,您必须在此处指定主题,该主题与您在项目的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 我认为这是最简单明了的方式。
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页面中使用,而
是我们列表中两个复选框之间的分隔符。
在带有s:checkboxlist的struts2页面上,使用样式“vertical”来制作垂直列表方向:
答案 3 :(得分:0)
如果没有看到修改后的.ftl文件,很难说出问题出在哪里,但一般的解决方案是:
在复制的文件中,在checkboxLabel类和迭代器之间添加一个中断:
<label ... class="checkboxLabel">
<br>
</@s.iterator>
参考/包含新的... / template / checkboxlist.ftl以覆盖标准的checkboxlist.ftl。
如果我没记错,上面的内容也可以在CSS中完成,但我忘记了细节。
答案 4 :(得分:0)
看到这个网站: http://mikeski.net/site/node/16
基本上,你只需要:它将包含3行,中间行使用简单主题中的checkboxlist.ftl。评论说:
<#include "/${parameters.templateDir}/simple/checkboxlist.ftl" />
然后复制上述网址中引用的freemarker代码。
我做到了,它对我有用。它会在各自的行上显示您的复选框。