Несколько экземпляровусловие должно быть сделано как единое целое - PullRequest
1 голос
/ 25 января 2011

1: У меня есть JSP с несколькими html "TR"

  <tr>'s

Моя страница

  <% ...%>
  <html>
  ...
  <body>
  <table>
  <tr class="1"> This is first line</tr>
  <br/>
  <tr class="2"> This is Second line</tr>
  <br/>
  <tr class="3"> This is Third line</tr>
  <br/>
  <tr class="4"> This is Fourth line</tr>
  <br/>
  <tr class="5"> This is Fifth line</tr>
  <br/>
  ...
  </html>

2: Теперь я получаю сеанс пользователя (если вошел в систему).Примечание >>: Использование Liferay themeDisplay здесь

  <%String userEmail=themeDisplay.getUser().getEmailAddress();%>
  <c:set var="userEmail" value="<%=userEmail%>"></c:set>

3: Я проверил, является ли его гость зарегистрированным или зарегистрированным пользователем.

Затем на первом и последнем «TR» отображается имя пользователя, вошедшего в систему.

  <% ...%>
  <html>
  ...
  <body>
  <table>
  <c:if test="${not empty userEmail}">      
  <tr class="1"> This is first line for registered user</tr>
  <c:if test="${empty userEmail}">      
  <tr class="1"> This is first line</tr>
  <br/>
  <tr class="2"> This is Second line</tr>
  <br/>
  <tr class="3"> This is Third line</tr>
  <br/>
  <tr class="4"> This is Fourth line</tr>
  <br/>
  <c:if test="${not empty userEmail}">      
  <tr class="5"> This is Fifth line for registered user</tr>
  <c:if test="${empty userEmail}">      
  <tr class="5"> This is Fifth line</tr>
  <br/>
  ...
  </html>

Это работает нормально !!

Мой вопрос >>>>> Если я хочу сделать эту проверку какой-либо константой, которая не будет повторяться много раз на странице JSP / HTML.Что нужно сделать ???

  <c:if> //to be declared only once. And called which ever <TR> needs a check??

1 Ответ

1 голос
/ 25 января 2011

Несколько альтернатив:

  1. Используйте c:set, чтобы установить зарегистрированную переменную на странице, которую вы используете для c:choose.

    <c:set var="registered" value="${not empty userEmail}"/>
    <c:choose>
    <c:when test="${registered}">
    <tr class="1"> This is first line for registered user</tr>
    </c:when>
    <c:otherwise>
    <tr class="1"> This is first line</tr>
    </c:otherwise>
    </c:choose>

  1. Запишите первую и последнюю строки как пустые строки таблицы, а затем используйте c:choose для запуска javascript и вставки нужных данных.
<code>
    <table>
    <tr id="firstRow"></tr>
    ...
    <tr id="lastRow"></tr>
    </table>

    <c:choose>
    <c:when test="${not empty userEmail}">
    <script>
    document.getElementById('firstRow').innerHTML = 'This is first line for registered user';
    document.getElementById('lastRow').innerHTML = 'This is Fifth line for registered user';
    </script>
    </c:when>
    <c:otherwise>
    <script>
    document.getElementById('firstRow').innerHTML = 'This is first line';
    document.getElementById('lastRow').innerHTML = 'This is Fifth line';
    </script>
    </c:otherwise>
    </c:choose>

...