2017-09-26 86 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