Jquery简单的操作选项卡在jsp中不起作用

时间:2011-05-05 05:23:44

标签: jquery html jquery-ui jsp

我正在试用jquery标签,用户可以在其中添加标签并删除标签。我找到了一个适合我需要的标签:

http://jqueryui.com/demos/tabs/#manipulation

我在启动时在jsp页面中尝试了这个。当我运行应用程序时,它抛出一个异常告诉:

服务器遇到内部错误(),导致无法完成此请求。

例外

org.apache.jasper.JasperException: /Items.jsp(34,32) #{...} is not allowed in template  text
 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:102)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:706)
org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:958)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1763)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:198)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:589)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

第(34,32)行

<a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span>

但是当我在html页面中粘贴代码时,它运行得很好.. 为什么这个行为?谁能解释一下 感谢:)

3 个答案:

答案 0 :(得分:1)

问题是JSP使用表达式语言(EL)标记${}来表示变量和类。虽然#{}不是JSP EL标记,但它是它的继承者,Facelets的标记,它会抛出错误,说它在JSP中是不允许的。您将不得不使用其他方法来定义将在正则表达式替换中替换的变量部分。

而不是使用

<a href='#{href}'>#{label}</a> <span class='ui-icon ui-icon-close'>Remove Tab</span>

尝试类似

的内容
<a href='~href~'>~label~</a> <span class='ui-icon ui-icon-close'>Remove Tab</span>

并从

更改正则表达式替换行
li = $( tabTemplate.replace( /#\{href\}/g, "#" + id ).replace( /#\{label\}/g, label ) ),

li = $( tabTemplate.replace( /~href~/g, "#" + id ).replace( /~label~/g, label ) ),

答案 1 :(得分:0)

尝试

<a href="#href">Give Label Here</a>

答案 2 :(得分:0)

var $tabs = $('#tabs').tabs({
                    tabTemplate: '<li><a href="<%= "#" %>{href}"><%= "#" %>{label}</a> <a href="#" class="remove">x</a></li>',
                    add: function(event, ui) {
                        var tab_content = $tab_content_input.val() || 'Tab '+tab_counter+' content.';
                        $(ui.panel).append('<p>'+tab_content+'</p>');
                    }
                    });