2011-03-14 59 views
8

美好的一天!HTML选择框,从servlet中选择的数据

我在html中的选择框有问题。我在我的简单CRUD项目的编辑部分,并且在用户可以编辑之前,所选择的数据将首先显示,然后通过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?

非常感谢。

回答

11

selected属性必须在HTML <option>元素上,它应该只有在选项值匹配时才设置。最优雅的方式是使用条件运算符?:。如果你有一些ListMap项目

<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> 

更好的方式是。例如。 a 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> 

这样你就不需要对所有选项重复相同的操作。

+0

谢谢BalusC先生。 :) – newbie 2011-03-14 11:48:07

+0

不客气。 – BalusC 2011-03-14 12:09:18