必须在未指定默认命名空间时使用前缀

时间:2016-04-28 06:59:05

标签: function jsp el

我尝试在Tomcat v7服务器上运行EL功能,但失败了。

JSP:

<input type="hidden" name="" id="Rcept_<%=i%>" value="${QStr.str_hl( incidentTpEtt.rceptCtts)}">

错误:

  

当未指定默认命名空间时,函数str2html必须与前缀一起使用

所以我尝试了以下代码

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 
<input type="hidden" name="" id="Rcept_<%=i%>" value="${fn:str_hl(QStr, incidentTpEtt.rceptCtts)}">

<input type="hidden" name="" id="Rcept_<%=i%>" value="${fn:QStr(str_hl, incidentTpEtt.rceptCtts)}">

错误:

  

无法使用指定的前缀

找到函数str_hl

QStr

public static String str_hl(String as_str) {
    char[] l_str = null;                                                    
    int li_len = 0;                                                          
    StringBuffer l_return = new StringBuffer();                               

    if(as_str == null)                                                       
        return null;

    l_str = as_str.trim().toCharArray();
    li_len = l_str.length;

    for(int i=0 ; i<li_len ; i++) {
        if     (l_str[i] == '&')  l_return.append("&amp;");
        else if(l_str[i] == '<')  l_return.append("&lt;");
        else if(l_str[i] == '>')  l_return.append("&gt;");
        else if(l_str[i] == '"')  l_return.append("&quot;");
        else if(l_str[i] == '\'') l_return.append("&#39;");
        else l_return.append(l_str[i]);
    }
    return l_return.toString();
}

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

据我了解这个问题。你已经把方法定义为静态所以调用它有了类名是完全没问题的,你错过的一件事是你应该use scriplet那里。

<input type="hidden" name="" id="Rcept_<%=i%>" value='<%=QStr.str_hl( incidentTpEtt.rceptCtts)%>'>

为了能够使用EL,您必须在Session,Request或Page等范围之一中定义实例,然后才能使用它。

注意: - 在调用incidentTpEtt方法之前,您还应该定义实例str_hl