这是我的性别输入字段的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)
答案 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>