<s:select> 使用默认选项为空时出现下拉问题

<s:select> drop down issue when using default option as empty

我正在使用 Map 来填充 Struts2 标记 <s:select > ,观察到当多次提交表单时,列表末尾会添加一个空行。 例如,如果 Map 有 2 个键值对,它显示 3 个记录并在底部附加一个空白记录(不是在顶部——默认情况下)。

    Item 1 
    Item 2 
    <-blank->

    <s:select id="bankAccountId"
    name="accountBean.recordDetails.BankAcct.bankAcctId" label="" 
    headerKey="" headerValue="" list="accountBean.bankAccountMap" 
    listKey="key" listValue="value" />  

    <select name="accountBean.recordDetails.BankAcct.bankAcctId">
        <option value=""></option> 
        <option value="51089">BANK XXXX123</option>
    </select>



<select name="accountBean.recordDetails.BankAcct.bankAcctId" id="bankAccountId"> <option value="-1" selected="selected">Default values</option> <option value="77746">Details XXXXXX2246</option> <option value="-1" selected="selected"> </option> <---this default value gets appened in the end... </select> 

当我使用 s:select 属性时 emptyOption="true" 观察到同样的问题但是当 emptyOption="false" 顶部元素变为非空(我不想要)。 重新提交 <option value="" selected="selected"> </option> 如果在重新提交之前选择了 default/empty 值,则会添加额外选项。. 这可以通过 javascript 或 jQuery 处理吗??

看起来,我认为问题在于您在提交后将默认值添加到地图,因此在页面的下一次渲染中,它已经包含该项目。通常,您应该在 prepare 方法中重新填充地图,这样 -1 键就不会出现在地图中。