Пользовательская страница JSP - PullRequest
0 голосов
/ 24 января 2011

В зависимости от сеанса пользователя я должен отображать разные вещи на JSP.

Что-то не так, пожалуйста, совет

  <c:if test="${session.getAttribute("userEmail")}">

        <c:choose>
        <c:when test="Ansari@precise-one.com"> //here if test is not null
        <tr>
            <td colspan="1" width="40%" nowrap="nowrap" style="text-align: left;">
            <img src="<%=request.getContextPath()%>/images/icons/chevron_double.gif"/>
            <a href="http://www.google.com" class="underlinedLinksLic">Google</a>

            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
            <img src="<%=request.getContextPath()%>/images/icons/chevron_double.gif"/>
            <a href="http://www.gmail.com" class="underlinedLinksLic">Gmail</a></td>  

        </tr>
        </c:when>
        <c:when test="test@liferay.com">   //here if session is null
        <tr>Hello</tr>  
        </c:when>

        <tr height="3px;">
            <td>&nbsp;</td>
        </tr>

    </c:choose> 

Ответы [ 2 ]

3 голосов
/ 24 января 2011
<c:if test="${session.getAttribute("userEmail")}">

Это не сработает. Это должно было быть

<c:if test="${not empty userEmail}">

Блок <c:if> будет вводиться всякий раз, когда атрибут области действия userEmail не является null или пустой строкой. Чтобы показать некоторые вещи, когда атрибут userEmail равен null или пустой строке, сделайте так:

<c:if test="${empty userEmail}">

Далее, эти сравнения строк

<c:when test="Ansari@precise-one.com">
<c:when test="test@liferay.com">  

должно было быть

<c:when test="${userEmail == 'Ansari@precise-one.com'}">
<c:when test="${userEmail == 'test@liferay.com'}">  

Зная эти факты, вы сможете восстановить свои блоки <c:if> и <c:choose> более подходящим образом. Вот пример:

<c:if test="${not empty userEmail}">
    This block will be displayed when attribute `userEmail` is not empty.

    <c:choose>
        <c:when test="${userEmail == 'Ansari@precise-one.com'}">
            This block will be displayed when `userEmail` matches Ansari@precise-one.com.
        </c:when>
        <c:when test="${userEmail == 'test@liferay.com'}">  
            This block will be displayed when `userEmail` matches test@liferay.com.
        </c:when>
        <c:otherwise>
            There must always be a `c:otherwise` block. 
            This will be displayed when attribute `userEmail` doesn't match anything.
        </c:otherwise>
    </c:choose>
</c:if>
<c:if test="${empty userEmail}">
    This block will be displayed when attribute `userEmail` is empty.
</c:if>

Смотри также:

0 голосов
/ 24 января 2011

Попробуйте использовать объект сеанса (зависит от того, как вы помечаете в сеансе, что пользователь вошел в систему):

session.getAttribute("logged-in") == true
...