日期:2014-05-18  浏览次数:20644 次

关于struts2下面<s:radio 结果分行显示问题
代码

<td><s:radio key="systemConfig.crossReginFlag"
id="systemConfig.crossReginFlag"
list="#{0:getText('systemConfig.crossReginFlag.0'),1:getText('systemConfig.crossReginFlag.1')}"
listKey="key" listValue="value" theme="simple" required="true"
cssStyle="width:150px;" />
</td>


这里从资源文件中取出信息,一共两条,作为选择项

显示的结果是下图上面的情况

现在想改为下面的情况 也就是分行显示  怎么处理呢?~ 百度了好久不行 没有类似的答案



------解决方案--------------------
1.修改struts2-core-2.1.8.jar包里template.simple包里radio.ftl模板
2.用css控制一下,cssStyle="width:150px;" 把width改小一点试试。cssStyle="width:20px;"
------解决方案--------------------
你直接用input 然后迭代你的数据。
------解决方案--------------------
用struts2标签不代表就不能用html元素,struts2组件标签布局都是用freemarker模板写好的,改动起来极不方便。从楼主的struts2标签来看可以看出是迭代systemConfig.crossReginFlag并且systemConfig.crossReginFlag是一个集合你的radio显示的时候以systemConfig.crossReginFlag的索引作为radio的value以systemConfig.crossReginFlag对应索引的元素作为他显示的内容,现在使用iterator和html元素来替代同等效果

<td><!--用ul这种菜单的元素就可以一个li一行-->
<ul>
<!--iterator每次迭代一个元素就会把这个元素放入栈顶-->
<s:iterator value="systemConfig.crossReginFlag" var="crossReginFlag" status="st">
<li>
<input type="radio" value="${st.index}">
<s:property value="getText(#crossReginFlag)"/>
</li>
</s:iterator>
</ul>
</td>