у меня проблема с компиляцией javaee проекта - PullRequest
0 голосов
/ 11 марта 2020

вот мой 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
}

и Вот мой java код в методе doPost: (com.airline.controllers)

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

, когда я пытаюсь запустить свой проект, он говорит:

Нет константы перечисления com. aviation.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 (HttpSer. 1031 *: 741)
org. apache .tomcat.websocket.server.WsFilter.doFilter (WsFilter. java: 53)

1 Ответ

0 голосов
/ 12 марта 2020

При использовании valueOf строковое значение должно совпадать с именем перечисления. Дело в комплекте. Поэтому вы должны использовать:

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

Или, следуя соглашениям именования для Enums, изменить свой enum на:

public enum Gender {
    MALE,
    FEMALE
}

И в вашем JSP:

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