2011-06-07 53 views
0

我使用以下條件檢查使用JSTL,但其引發錯誤「javax.servlet.jsp.el.E​​LException:無功能被映射到名爲‘FN:長度’
<c:choose>
<c:when test='${fn:length(studentData.rollNumber) == "0"}'> Found Nothing </c:when> <c:otherwise> Found something </c:otherwise> </c:choose>
JSTL EL條件誤差

我在做什麼錯在這裏?我只是需要比較的卷數的長度。

+0

你也可以使用'$ {空studentData.rollNumber}'。 – BalusC 2011-06-07 19:46:49

回答

2

作爲每documentation,所述fn:length()僅適用於String(這將返回String#length()方法的值)和上Collection(這將返回Collection#size()方法的值)。

但是,您好像要通過號碼。一個整數或其他東西。 fn:length()不適用於數字,並且總是會給出false,而不考慮數字的值。

如果您要檢查,如果事情是null,那麼就這樣做:

<c:choose> 
    <c:when test="${studentData.rollNumber == null}">Found Nothing</c:when> 
    <c:otherwise>Found something</c:otherwise> 
</c:choose> 

或者,如果你想檢查數的值是0,然後就去做

​​

請注意,empty檢查工作同樣好,這是無論它是一個數字,字符串或集合。任何是nullfn:length()0將評估true

<c:choose> 
    <c:when test="${empty studentData.rollNumber}">Found Nothing</c:when> 
    <c:otherwise>Found something</c:otherwise> 
</c:choose> 
+0

BalusC,對不起,我沒看到你的回覆。你是對的,它是固定的。 – t0mcat 2011-06-07 21:32:00

+0

啊.......笨我。 – 2011-06-08 07:06:32

1

添加

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 

而且使條件類似下面

<c:when test="${fn:length(studentData.rollNumber) == 0}"> 
+0

儘管我有taglibs:JSPG0227E:翻譯時捕獲異常/WEB-INF/jsp/provider/splashPage.jsp:JSPG0095E:無法使用uri http:// java找到tld中的el函數長度。 sun.com/JSP/Page – t0mcat 2011-06-07 19:34:51

+0

擊中F5,重新檢查taglib uri。 – 2011-06-07 19:35:48

+0

你可能想要在應用程序服務器上更新你的問題 – 2011-06-07 19:35:55