2016-07-20 8 views
-2

Я делаю JSP/Servlet CRUD с MySQL. В настоящее время у меня две роли в моем проекте: менеджер и сотрудник. В jsp, где я показываю данные из MySQL, я хочу отображать разные данные на основе роли. Как мне получить доступ к методу request.isUserInRole() без использования сценариев?Как получить доступ к «isUserInRole» в jsp с помощью JSTL

Прямо сейчас я попробовал с скриптлетом следующим образом:

<c:if <%request.isUserInRole("manager");%>=true> <!-- Display something --> <c:if <%request.isUserInRole("employee");%>=true> <!-- Display something -->

Но я получаю HTTP Status 500 - /protected/listUser.jsp (линия: 97, колонок: 9) Незавершённая < с: if tag, что, вероятно, является некоторой проблемой при смешивании JSTL с помощью скриптлета.

Как я могу получить доступ к методу на моей странице JSP только с помощью JSTL? ===================== EDIT ==========================

Я попробовал решение tarashypka, но это не сработало. Я положил кнопку под <c:if test="${isManager}">. Когда я иду тестировать его в графическом интерфейсе, кнопка исчезает после нажатия на нее. Он возвращается только после обновления страницы.

ответ

1

Необходимо указать условие с атрибутом теста (который is required).

Это может быть достигнуто с

<% request.setAttribute("isManager", request.isUserInRole("manager")); %> 
    <c:if test="${requestScope.isManager}"> 
    <!-- Display manager --> 
    </c:if> 
    <c:if test="${!requestScope.isManager}"> 
    <!-- Display employee --> 
    </c:if> 

или

<% request.setAttribute("isManager", request.isUserInRole("manager")); %> 
    <c:choose> 
    <c:when test="${requestScope.isManager}"> 
     <!-- Display manager --> 
    </c:when> 
    <c:otherwise> 
     <!-- Display employee --> 
    </c:otherwise> 
    </c:choose> 
+0

Это работает только один раз. Я положил кнопку под ''. Когда я иду тестировать его в графическом интерфейсе, кнопка исчезает после нажатия на нее. Если я перезагружу страницу, она вернется, но это не слишком удобно. Любая помощь? – NotAMonkey24

+0

Это еще одна проблема, вы должны создать новое сообщение об этом. Что это за кнопка (добавьте код с этим вопросом, если это подходит)? Используйте 'requestScope':' <% request.setAttribute ("isManager", request.isUserInRole ("manager")); %> ' – tarashypka

 Смежные вопросы

  • Нет связанных вопросов^_^