如题
<c:forEach  items="${nbcsList}" var="index">
  <%String cp = java.net.URLEncoder.encode(${index.name},"utf-8");%>
<li><a onfocus="this.blur()" target="_blank" href="<%=basePath%>index/index_getIndexById.action?id=${index.id }&leaf=<%=cp%>">${index.name }</a></li></c:forEach>

解决方案 »

  1.   

    el只能这么搞, 毕竟不是ognl, 像这种东西你应该在后台做处理的, 而不应该放界面!
    应该在Servlet中对这个index.name处理好了再给界面显示!
      

  2.   

    要不统一使用el表示达,要么直接使用java的语句块,你不能在java的语句块中嵌套el表达式。
    将encode方法扩充一下,搞个自定义的表达式来实现此功能。你这样写是错误的。
      

  3.   

    试下
    <%
    pageContext.setAttribute("uriEncoder",java.net.URLEncoder);
    %>${uriEncoder.encode(index.name,'utf-8') }
      

  4.   

    报错
    org.apache.jasper.JasperException: /index.jsp(459,126) The function encode must be used with a prefix when a default namespace is not specified 
        org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
        org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
        org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
        org.apache.jasper.compiler.Validator$ValidateVisitor$1FVVisitor.visit(Validator.java:1478)
        org.apache.jasper.compiler.ELNode$Function.accept(ELNode.java:129)
        org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200)
        org.apache.jasper.compiler.ELNode$Visitor.visit(ELNode.java:242)
        org.apache.jasper.compiler.ELNode$Root.accept(ELNode.java:56)
        org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:200)
        org.apache.jasper.compiler.Validator$ValidateVisitor.validateFunctions(Validator.java:1503)
        org.apache.jasper.compiler.Validator$ValidateVisitor.prepareExpression(Validator.java:1508)
        org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:724)
        org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:935)
        org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2336)
        org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2386)
        org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:838)
        org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1507)
        org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2336)
        org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2386)
        org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2392)
        org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
        org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2336)
        org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
        org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:178)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
        org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
        org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
        org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
        org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
        org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
        org.apache.struts2.dispatcher.ServletDispatcherResult.doExecute(ServletDispatcherResult.java:154)
        org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186)
        com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:362)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:266)
        com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
        org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
        com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
        com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
        org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
        org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
        org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
        org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
        org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
        org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
        org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
        org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
        org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        java.lang.Thread.run(Thread.java:619)
        --------------------------------------------------------------------------------
      

  5.   

    在你的web-inf下建一个tld文件
    内容如下<?xml version="1.0" encoding="UTF-8" ?>
    <taglib xmlns="http://java.sun.com/xml/ns/j2ee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
        version="2.0">
    <description>xxx</description>
    <display-name>xxx</display-name>
    <tlib-version>1.1</tlib-version>
    <short-name>xx</short-name>
    <uri>http://www.xxx.com/</uri>
    <function>
    <name>encode</name>
    <function-class>java.net.URLEncoder</function-class>
    <function-signature>java.lang.String encode(java.lang.String,java.lang.String)</function-signature>
    </function>
    </taglib>
    在你的jsp里写
    <%@ taglib uri="http://www.xxx.com/" prefix="xx"%>
    ${xx:encode(index.name,'utf-8')}
      

  6.   

    老版本需要在web.xml里注册
    在web-app 也就是根节点下
      <taglib>
    <taglib-uri>http://www.xxx.com/</taglib-uri>
    <taglib-location>/WEB-INF/xxx.tld</taglib-location>
      </taglib>
    其中http://www.xxx.com/和前面回答的一样 随便写 哪怕你写成aaa都可以
    在jsp就一样了
    <%@ taglib uri="http://www.xxx.com/" prefix="xx"%>
    ${xx:encode(index.name,'utf-8')}
      

  7.   

    试下
    <%
    pageContext.setAttribute("uriEncoder",java.net.URLEncoder);
    %>${uriEncoder.encode(index.name,'utf-8') } 
    这句话还要吗