2014-03-28 101 views
3

我有一個這樣的形式:Spring MVC的 - 填充枚舉DROPDOWNLIST

<form:form method="POST" action="searchProjects" commandName="projectcriteria"> 
    <table> 
     <tr> 
      <td class="label"><spring:message code="number" /></td> 
      <td><form:input path="number" /></td> 
      <td class="label"><spring:message code="customer" /></td> 
      <td><form:input path="customer" /></td> 
     </tr> 
     <tr> 
      <td class="label"><spring:message code="name" /></td> 
      <td><form:input path="name" /></td> 
      <td class="label"><spring:message code="status" /></td> 
      <td> 
       <form:select path="status"> 
        <option value=""><spring:message code="please_select" /></option> 
        <c:forEach var="enum" items="${allStatus}"> 
         <option value="${enum}"><spring:message code="${enum.statusEnum}" /></option> 
        </c:forEach> 
       </form:select> 
      </td> 
     </tr> 
     <tr> 
      <td colspan="4" style="text-align: center;"> 
       <input type="submit" value="<spring:message code="search"/>" /> 
       <input type="button" value="<spring:message code="reset_criteria"/>" />  
      </td> 
     </tr> 
    </table> 
</form:form> 

的Projectcriteria和StatusEnum是這樣的:

public enum StatusEnum { 
    INV("Invalidate"), 
    TOV("Validate"), 
    VAL("Validated"), 
    FIN("Finished"); 

    private String name; 

    private StatusEnum(String name) { 
     this.name = name; 
    } 

    public String getStatusEnum() { 
     return this.name; 
    } 
} 

public class ProjectCriteria { 
    private long number; 

    private String name; 
    private String customer; 
    private StatusEnum status; 

    /** 
    * @return the number 
    */ 
    public long getNumber() { 
     return number; 
    } 

    /** 
    * @param number the number to set 
    */ 
    public void setNumber(long number) { 
     this.number = number; 
    } 
    /** 
    * @return the name 
    */ 
    public String getName() { 
     return name; 
    } 
    /** 
    * @param name the name to set 
    */ 
    public void setName(String name) { 
     this.name = name; 
    } 
    /** 
    * @return the customer 
    */ 
    public String getCustomer() { 
     return customer; 
    } 
    /** 
    * @param customer the customer to set 
    */ 
    public void setCustomer(String customer) { 
     this.customer = customer; 
    } 
    /** 
    * @return the status 
    */ 
    public StatusEnum getStatus() { 
     return status; 
    } 
    /** 
    * @param status the status to set 
    */ 
    public void setStatus(StatusEnum status) { 
     this.status = status; 
    } 
} 

如何填充在ProjectCriteria的StatusEnum屬性類到jsp頁面。我必須把什麼東西放進控制器?

非常感謝您的幫助。

+0

可能的重複[如何從枚舉中創建下拉菜單?](http://stackoverflow.com/questions/22613976/how-to-create-a-drop-down-menu-from-an- ENUM) –

回答

5

添加您中的枚舉控制器方法,該方法給予請求相應頁面值即

model.addAttribute("enumValues",StatusEnum.value()); 

然後使用迭代的foreach enumValues在下拉菜單。

3

你可以試試這個(抱歉代碼未測試):

<c:forEach var="enum" items="${StatusEnum.values()}"> 
    <option value="${enum}"><spring:message code="${enum.name}" /></option> 
</c:forEach> 

注意:如果您的enum類有一個包的名字,你可能要包括在items屬性的完全限定類名。您也可以將enum作爲控制器的模型屬性(?)。