美好的一天!
我在使用html中的选择框时遇到问题。我在我的简单CRUD项目的EDIT部分,在用户可以编辑之前,首先显示所选数据,然后通过servlet在数据库中检索它。
现在我希望我检索的数据是我的选择框中的SELECTED(默认值)。 ${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),选择=选项1 ......
我在其中一个论坛上看到了类似THIS的内容,但它是PHP格式的。我怎么能用JSP做到这一点?
非常感谢。
答案 0 :(得分:13)
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
有id
和name
属性。
<select name="category">
<c:forEach items="${categories}" var="category">
<option value="${category.id}" ${product.category == category.id ? 'selected' : ''}>${category.name}</option>
</c:forEach>
</select>
这样你就不需要为所有选项重复同样的事情了。