0

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>

谢谢

4

2 回答 2

1

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

您需要将两个集合(t1 和 t2)链接到表单中的同一属性(例如属性 selectedItemId),然后,如果您需要区分哪个集合与哪个集合,请通过解析值来执行此操作。例如,您可以将值设置为 "t1<%=itemId_t2%>" 和 "t2<%=itemId_t2%>" 并在您的 selectedItemId 设置器中解析值以去掉前 2 个字符(告诉您它们是否为 t1或 t2)。

于 2012-08-14T16:12:33.383 回答
0

最后,我确实找到了一种 jsp 级别的方法,无需更改表单。我使用标准输入类型。并将字段设置为隐藏属性。我为单选按钮设置了 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>

这似乎是最好的方法。

于 2012-08-23T13:48:41.330 回答