一尘不染

HTML选择框,从Servlet中选择数据

jsp

美好的一天!

我在html中的选择框时遇到问题。我在我的简单CRUD项目的EDIT部分中,在用户可以编辑之前,所选数据将首先显示,然后通过servlet在数据库中检索到它。

现在,我希望检索到的数据成为我的选择框中的“已选择”(默认)数据。 ${product.category}

<select size="1" name="category">
        <option value ="1">Dogs</option>
        <option value ="2">Cats</option>
        <option value ="5">Others</option>
</select>

我试图像这样插入它,但是不起作用。

<select size="1" name="category" selected=${product.category}>
        <option value ="1">Dogs</option>
        <option value ="2">Cats</option>
        <option value ="5">Others</option>
</select>

我想做这样的事情。如果($ {product.category} == 1),selected = option 1 …

我在一个论坛中看到过类似THIS的东西,但是它是PHP格式的。如何使用JSP做到这一点?

非常感谢你。


阅读 295

收藏
2020-06-08

共1个答案

一尘不染

selected属性必须位于HTML<option>元素上,并且应在选项值匹配时设置。最优雅的方法是使用条件运算符?:

<select name="category">
    <option value="1" ${product.category == '1' ? 'selected' : ''}>Dogs</option>
    <option value="2" ${product.category == '2' ? 'selected' : ''}>Cats</option>
    <option value="5" ${product.category == '5' ? 'selected' : ''}>Others</option>
</select>

最好是如果您有一些物品List或物品Map。例如,List<Category>其中Category具有idname属性。

<select name="category">
    <c:forEach items="${categories}" var="category">
        <option value="${category.id}" ${product.category == category.id ? 'selected' : ''}>${category.name}</option>
    </c:forEach>
</select>

这样,您无需为所有选项重复相同的操作。

2020-06-08