如何在Java Web中返回下拉列表的名称和值?

时间:2018-03-13 03:25:46

标签: java servlets web netbeans

我有一个名为Order的HTML页面,其中包含一个下拉列表:

<select name="Pizzas">
    <option value="15.80" name="Napoletana">Napoletana</option>
    <option value="16.95" name="Margherita">Margherita</option>
    <option value="17.50" name="Sardiniana">Sardiniana</option>
    <option value="16.85" name="Pollo Dolce">Pollo Dolce</option>
    <option value="14.95" name="Funghi">Funghi</option>
    <option value="15.60" name="Patate Con Aglio">Patate Con Aglio</option>
    <option value="15.60" name="Romana">Romana</option>
    <option value="17.85" name="Gamberetti">Gamberetti</option>
    <option value="18.75" name="Capri">Capri</option>
    <option value="14.30" name="La Mexicana">La Mexicana</option>
    <option value="15.60" name="Pomodori Secchi">Pomodori Secchi</option>
    <option value="17.70" name="Proscuitto Con Pomodori">Proscuitto Con Pomodori</option>
    <option value="19.90" name="Siciliana">Siciliana</option>
    <option value="16.70" name="Palermo">Palermo</option>
    <option value="19.05" name="Pesto">Pesto</option>
</select>

我想获取选项的名称和值,以便将其传递给Servlet。到目前为止,我想出了如何传递值,即:

String[] pizzas = request.getParameterValues("Pizzas");

然后显示它:

out.println("<strong>Pizza: </strong>");
if (pizzas != null) {
    for (String pizza: pizzas) {
        out.println("<br/>Price: " + pizza);
    }
}

那么我怎样才能传递这些名字呢?我正在尝试创建收据,以便我可以:披萨:“名称”和价格:“价格”!

2 个答案:

答案 0 :(得分:1)

仅将选项值传递给服务器。但是,通过创造性地使用选项的值,您可以传递多个数据作为值。

<option value="15.80;Napoletana">Napoletana</option>

在您的服务器代码中,将值拆分为商品分隔符...

String f[] = pizza.split(";");
System.out.println(f[1] + " costs " + f[0]);

我应该指出:存储关键信息客户端正在打开攻击。恶意用户可以制作他们自己的请求字符串,这样他们就可以订购&#34; 0.80; Napoletana&#34;披萨,节省15美元。

最好使用唯一的ID客户端,并查找关键信息服务器端。

答案 1 :(得分:-1)

发布表单时,它会使用select元素的名称发送所选选项的值,而不是选项元素的name属性。 所以你可以获得Pizzas =选择的选项值。比如比萨饼:15.60

您可以尝试发送自定义json。

var formData = {};
formData.pizzaName = $('#Pizzas').find(":selected").attr("name");
formData.pizzaValue = $('#Pizzas').find(":selected").val(); 
// You may add more data from your form here

$.ajax({
    type: 'POST',
    url: 'Test',
    data: JSON.stringify(formData),
    success: function(data) { console.log("Success"); },
    contentType: "application/json",
    dataType: 'json'
});