Java servlet - 从HTML select multiple中检索文本和值

时间:2012-08-20 17:29:12

标签: java jsp servlets

我的JSP页面中有一个HTML选择框,允许多个选择。

<form action="resources" method="post" >
    <select name="frmSelectedResources" multiple="multiple">
        <option value="1">Bill</option>
        <option value="3">Kathy</option>
        <option value="18">Mike</option>
    </select>
</form> 

在我的Java servlet中,我可以使用以下命令获取选择资源的值:

String[] assignedResources = request.getParameterValues("frmSelectedResources");

给我一​​个1,3,18的字符串数组。但是,如何检索每个值的文本?

我需要回到这样的事情:(1,Bill),(3,Kathy),(18,Mike)

我正在尝试做的是在我进行表单验证时重建Selected Resource列表,并且用户在表单的其他位置发生了数据输入错误。

提前感谢您的任何帮助或建议。

3 个答案:

答案 0 :(得分:4)

创建一些字符分隔键,同时填充SELECT选项。

<form action="resources" method="post" >
    <select name="frmSelectedResources" multiple="multiple">
        <option value="1:Bill">Bill</option>
        <option value="3:Kathy">Kathy</option>
        <option value="18:Mike">Mike</option>
    </select>
</form> 

使用它

String[] assignedResources = request.getParameterValues("frmSelectedResources");
if (assignedResources != null) {
    for(String item: assignedResources){
        String keyValue[]= item.split(":");
        out.println("Key: " + keyValue[0]);
        out.println("Value: " + keyValue[1]);
    }
}

答案 1 :(得分:2)

您无法从请求参数接收它(除非您明确设置它),浏览器只发送选择项的值而不是标签,它只使用标签显示

制作一张可以从收到的价值中解析标签的地图

答案 2 :(得分:0)

您只会获得价值。如果你想要文本,可以是其中一种,将值改为"1-Bill"等,并在servlet中解析它。