Struts2如何通过迭代列表来创建表,使每行有一个单选按钮?

时间:2011-03-31 11:17:55

标签: struts2 radio-button html-table

我正在尝试创建一个表来使用迭代器在动作类的列表中显示一些数据。每行都有列表中每个对象的属性。

<table class="TableA" cellpadding="5px" border="1">
<tr class="even">
    <th></th>
    <th>Col1</th>
    <th>Col2</th>
</tr>
<s:iterator value="objectList" status="obj">
    <tr
        class="<s:if test="#obj.odd == true ">odd</s:if><s:else>even</s:else>">
        <td></td>
        <td><s:property value="objId" /></td>
        <td><s:property value="objValue" /></td>
    </tr>
</s:iterator>

我需要在每行的第一个单元格中使用单选按钮,以便可以选择一行进行编辑或删除。 我知道这可以使用<input type="radio" ...>来完成。但我需要使用struts2的无线电标签。但使用此标记的问题是它为每个无线电标记生成一行(请参阅here)。

有可能吗?如果是,那么如何?

3 个答案:

答案 0 :(得分:3)

我认为以下语法对您更好,因为您希望使用单选按钮

选择每一行
<s:radio theme="simple" name="object_radio" list="#{objId:objId}"/>

这样你也不需要objId列 此语法将提交objId作为所选单选按钮的值。您可以修改语法以更改单选按钮的显示属性或使其为空白

答案 1 :(得分:1)

,你的回答对我很有帮助。 这个链接也对我很有帮助: http://struts.apache.org/2.0.14/docs/how-do-i-render-a-single-radio-button.html

我需要的是一个表格,其中两列是单选按钮,但每列都是一个独立的组。此外,我不想将键显示为每个单选按钮的标签/值,因为该信息显示在其他列中。我的行是在hashmap上迭代构建的,其中hashmap的键是单选按钮值。

<s:iterator value="myHashMap">
<tr>
  <td><s:radio name="selectedRadioValueFirstColumn"  list="#{key:''}"/></td>
  <td><s:radio  name="selectedRadioValueSecondColumn" list="#{key:''}"/></td>
<%--....... (my other columns) .... --%>
<tr>

所以我将选项值设置为hashmap的键,所选值将存储在字符串属性“selectedRadioValueFirstColumn”和“selectedRadioValueSecondColumn”中。

答案 2 :(得分:0)

Kaillash: 如果我完全理解你的要求你的意思是说当用struts2单选按钮struts2显示页面时会自动为每个单选按钮创建一行。

如果是这种情况,那么struts2是默认的struts2功能,struts2对模板主题进行操作,默认主题(xhtml)会自动为每个struts2标签生成一些HTML标记。

如果你想让struts2标签不生成任何额外的标记使用主题就像simple.it可以按照这样的标签来完成

<s:radio key="personBean.gender" list="genders" theme="simple" />

或者您也可以在页面基础上设置主题.. 在根目录中创建struts2.properties文件并输入以下条目

struts.ui.theme=simple

我希望这会对你有所帮助