struts 1单选按钮分组

时间:2012-08-13 21:21:37

标签: jsp struts radio-button grouping

Struts 1.x 我有一排单选按钮和2个不同的项目,具有不同的属性。这将创建2组不同的输入单选按钮。一次使用name =“item_t1”,另一次使用name =“item_t2”。 然后不将它们组合在一起。我怎样才能将它们组合在一起。我知道单选按钮按名称分组,但在这种情况下,名称具有不同的上下文。

<logic:iterate id="item" name="searchResults" property="searchResultsList">
<logic:notEmpty name="item" property="itemId_type1" >
    <bean:define id="itemId_t1" name="item" property="itemId_type1"/>
    <tr>
        <td valign="middle">
        <html:radio property="selectedItemId_t1" value="<%=itemId_t1%>"/>
        </td>
    </tr>
</logic:notEmpty>
<logic:notEmpty name="item" property="itemId_type2" >
    <bean:define id="itemId_t2" name="item" property="itemId_type2"/>
    <tr>
        <td valign="middle">
            <html:radio property="selectedItemId_t2" value="<%=itemId_t2%>"/>
        </td>
    </tr>
</logic:notEmpty>
</logic:iterate>

由于

2 个答案:

答案 0 :(得分:1)

在Struts 1.x中,具有相同属性的元素将被分组。因此,您有两个组的原因是您有一组链接到'selectedItemId_t1'属性的单选按钮,另一组链接到'selectedItemId_t2'属性。

您需要将两个集合(t1和t2)链接到表单中的相同属性(例如,属性selectedItemId),然后,如果您需要通过解析该值来区分哪个集合执行此操作。例如,您可以将值设置为“t1&lt;%= itemId_t2%&gt;”和“t2&lt;%= itemId_t2%&gt;”并在您的selectedItemId setter中解析该值以取消前2个字符(给出它们是t1还是t2)。

答案 1 :(得分:0)

最后,我确实找到了一种jsp级别的方法,而不更改Form。我使用标准输入类型。并将字段设置为隐藏属性。我将onClick设置为单选按钮以分别设置字段。

<html:hidden property="itemId_t1" styleId="itemId_t1"/>
<html:hidden property="itemId_t2" styleId="itemId_t2"/>

function setSelectedItemId_t1(item1Id)
{
    getElementById("itemId_t1").value = item1Id
    getElementById("itemId_t2").value = null
}
function setSelectedItemId_t2(item2Id)
{
    getElementById("itemId_t2").value = item2Id;
    getElementById("itemId_t1").value = null
}

<logic:iterate id="item" name="searchResults" property="searchResultsList">
<logic:notEmpty name="item" property="itemId_type1" >
    <bean:define id="itemId_t1" name="item" property="itemId_type1"/>
    <tr>
        <td valign="middle">
        <input type="radio" name="sameItem" value="<%=itemId_t1%>" onclick="setSelectedItemId_t1(value)" /> 
        </td>
    </tr>
</logic:notEmpty>
<logic:notEmpty name="item" property="itemId_type2" >
    <bean:define id="itemId_t2" name="item" property="itemId_type2"/>
    <tr>
        <td valign="middle">
        <input type="radio" name="sameItem" value="<%=itemId_t2%>" onclick="setSelectedItemId_t2(value)" />
        </td>
    </tr>
</logic:notEmpty>
</logic:iterate>

这似乎是最好的方法。