Я занимаюсь разработкой веб-приложения, и в моем классе есть три статические переменные, называемые AccountManagement, которые представляют три возможных состояния, которые могут быть достигнуты при нажатии на ссылку в электронном письме для активации учетной записи:
public final static int ACTIVATION_EXCEPTION_OCCURRED = -1;
public final static int ACTIVATION_CODE_INCORRECT = 0;
public final static int ACTIVATION_SUCCESSFUL = 1;
При запуске они сохраняются в контексте в виде атрибутов с именами «ActivSuccessful», «ActivCodeIncorrect» и «ActivExceptionOccurn».Когда пользователь нажимает на ссылку в электронном письме, чтобы активировать учетную запись, запрос отправляется в AccountManagementServlet, и его / ее имя и результат проверки кода активации добавляются в качестве атрибутов в его сеанс (которыйсоздается, если у них его еще нет).Имена атрибутов: «firstName» и «ActivationStatus» (соответственно).Затем сервлет перенаправляет на Activation_status.jsp.
Проблема, с которой я столкнулся, заключается в том, что по какой-то причине операторы равенства EL в этой JSP не оцениваются, и я остаюсь с пустой страницей.
Я думаю, это потому, что я сохранил их как примитивные целые числа, и они извлекаются как объекты.Если так, как я могу привести их к целым числам для сравнения?И если это не проблема, кто-то может сказать мне, что это может быть?Если я заменю все атрибуты servletContext в приведенном ниже коде их соответствующими целыми числами, EL, кажется, приведёт атрибуты sessionScope к целым числам на основе наличия фактического целого числа, и код работает.Я не хочу жестко кодировать числа в jsp, поэтому, если кто-то может помочь мне здесь, я был бы благодарен.Вот код для JSP:
<c:choose>
<c:when test="${sessionScope.activationStatus == servletContext.activationSuccessful}">
Congratulations ${sessionScope.firstName}, you've activated your account!
</c:when>
<c:when test="${sessionScope.activationStatus == servletContext.activationCodeIncorrect}">
Hi ${sessionScope.firstName}, this activation code is incorrect, please try clicking the link in the e-mail (or the copy and paste instructions) again. If you still end up here, <a href ="send_another_activation_code_page.html">you'll need to get another activation code</a>
</c:when>
<c:when test="${sessionScope.activationStatus == setvletContext.activationExceptionOccurred}">
Hi ${sessionScope.firstName}, an error occurred during activation, please try clicking the link in the e-mail (or the copy and paste instructions) again. If you still end up here, most likely the time period to activate this account has expired. Don't fret, but you can sign up again (with the same e-mail, if you wish) <a href="index.html">here</a>!
</c:when>
</c:choose>