2013-10-26 42 views
0

我在为我的jsp页面编写if-then-else条件时遇到了一些问题。我认为这个问题与我的报价有关。也有可能在JavaScript中使用JSTL?JSTL if-then-else session属性

代码

<c:choose> 
    <c:when test= "'<%=request.getSession().getAttribute("userName")%>' == Guest"> 
     <button class="btn" id="getCitizens" onclick="DoGuestAccess()" type="button">Guest Access</button> 
    </c:when> 
    <c:otherwise> 
     <button class="btn" id="getCitizens" onclick="DoUsersAccess()" type="button">User Access</button> 
    </c:otherwise> 
</c:choose> 

错误

org.apache.jasper.JasperException: /WEB-INF/jsp/newpage.jsp (line: 485, column: 71) equal symbol expected 
+1

没有事实并非如此。 JSTL只能在服务器端解释。 – Farid

+0

所以我应该将JSTL值传递给html元素,然后使用javascript从条件元素中获取值? – devdar

+0

JSTL可以用来渲染JavaScript。 –

回答

2

这看起来与测试表达式有问题,试试这个:

<c:choose> 
    <c:when test= "${request.getSession().getAttribute("userName").equals("Guest")}"> 
     <button class="btn" id="getCitizens" onclick="DoGuestAccess()" type="button">Guest Access</button> 
    </c:when> 
<c:otherwise> 
    <button class="btn" id="getCitizens" onclick="DoUsersAccess()" type="button">User Access</button> 
</c:otherwise> 

另外,Java使用equals方法进行字符串比较。

或者更详细:

<% var userName = request.getSession().getAttribute("userName"); %> 
<c:choose> 
    <c:when test= "${userName.equals("Guest")}"> 
     <button class="btn" id="getCitizens" onclick="DoGuestAccess()" type="button">Guest Access</button> 
    </c:when> 
<c:otherwise> 
    <button class="btn" id="getCitizens" onclick="DoUsersAccess()" type="button">User Access</button> 
</c:otherwise> 

+0

“$ {userName.equals('Guest')}”为我工作 – devdar

+1

是的,'$ {..}'是重要的,不确定引号,有时会转义帮助:“$ {userName.equals(\”客人\”)}”。单引号用于java中的字符,但如果它起作用,它就可以工作。 –