2017-09-26 129 views
0

請幫我解決下面的代碼嗎?我正在嘗試將ENUM值變爲下拉菜單,但下拉菜單不顯示任何內容。從enum jsp下拉列表

create.jsp

<select name="labOwner" name="labOwner" id="labOwner"> 
     <option value="Select"></option> 
     <c:forEach var="labOwner" items="${labOwner}"> 
      <li>${labOwner}</li> 
     </c:forEach> 
    </select> 

LabController.java

@RequestMapping(value = "/lab/labOwner") 
public ModelAndView getPages(){ 
    List<LabOwner> labOwner = new ArrayList<LabOwner>(Arrays.asList(LabOwner.values())); 
    ModelAndView model = new ModelAndView("create"); 
    model.addObject("labOwner", labOwner); 

    return model; 
} 

LabOwner.java

public enum LabOwner { 
    G_ONLY("G"), 
    D_ONLY("D"), 
    GS("S/D "); 

    private String labOwner; 

    LabOwner(String labOwner) { 
     this.labOwner = labOwner; 
    } 

    public String getLabOwner() { 
     return labOwner; 
    } 

回答

0

您可以使用Spring form標籤的屬性綁定:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %> 

<form:select path="labOwnerBeanPropertyNameHere" id="labOwner"> 
    <c:forEach var="labOwnerValue" items="${labOwner}"> 
     <form:option value="${labOwnerValue}">${labOwnerValue}</form:option> 
    </c:forEach> 
</form:select> 

請注意,您需要在您的labOwner列表中顯示每個項目的值,而不是整個列表。

此外,控制器代碼可以簡化爲:

@GetMapping("/lab/labOwner") 
public String getPages(Model model){ 
    model.addAttribute("labOwner", 
         new ArrayList<LabOwner>(Arrays.asList(LabOwner.values()); 
    return "create"; 
} 

最後,來看看Project Lombok,並使用@Getter註解爲您Enum類。

+0

感謝您的回覆。如何在不使用xml的情況下設置labOwnerBeanProperty –

+0

您的表單將有一個支持bean - 通常是一個簡單的POJO,它具有您在表單上的屬性。這就是你如何捕捉你的用戶選擇的值(你可以堅持他們到一個數據庫)。看看SO和其他地方 - 很多例子! – bphilipnyc