我在编译javaee项目时遇到问题

时间:2020-03-11 14:30:02

标签: jsp java-ee-7

这是我的性别输入字段的jsp代码:

<div class="inputfield">
        <label for="gender" class="inputlabel"> Gender : </label>  
        <select name="gender">
        <option value="male">Male</option>
        <option value="female">Female</option>
        </select>
        </div>

这是我对“性别”值的枚举:(com.airline.models)

public enum Gender {
    Male,
    Female
}

这是我在doPost方法中的Java代码:(com.airline.controllers)

String gender = request.getParameter("gender"); 
    p.setGender(Gender.valueOf(gender));
// p is a object of a class

当我尝试运行我的项目时,它说:

没有枚举常量com.airline.models.Gender.male 服务器遇到意外状况,阻止其满足请求。
java.lang.IllegalArgumentException:没有枚举常量com.airline.models.Gender.male
java.base / java.lang.Enum.valueOf(Enum.java:240)
com.airline.models.Gender.valueOf(Gender.java:1)
com.airline.controllers.AddPassenger.doPost(AddPassenger.java:102)
javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

1 个答案:

答案 0 :(得分:0)

使用valueOf时,字符串值必须与枚举名称完全相同。包括案例。所以你应该使用:

<option value="Male">Male</option>
<option value="Female">Female</option>

或者,在为Enums命名后,将您的枚举更改为:

public enum Gender {
    MALE,
    FEMALE
}

在您的JSP中:

<option value="MALE">Male</option>
<option value="FEMALE">Female</option>