我试图在JSP和Spring MVC的浏览器屏幕上显示一条简单的消息。
<h2>#{message}</h2>
然而,它抛出了以下异常:
org.apache.jasper.JasperException: /Ekle/DomainEkle.jsp (line: 9, column: 6) #{...} is not allowed in template text
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:103)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:733)
org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:954)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434)
org.apache.jasper.compiler.Node$Root.accept(Node.java:475)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1798)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:217)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:373)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:646)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:357)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
这是如何引起的?如何解决?
答案 0 :(得分:5)
使用
<h2>${message}</h2>
而不是
<h2>#{message}</h2>
${...}
是JSP中使用的表达式语言,请查看更多here
#{...}
是与JSF技术相关的表达式语言,请查看更多here
答案 1 :(得分:2)
要在JSP中显示/打印ModelAttribute,您必须使用${..}
表示法。
所以在你的情况下你应该使用
<h2>${message}</h2>
相反,如果要访问对象字段,则应使用点表示法。
示例:
public Person {
private String name;
private String surname;
public Person(String name, String surname) {
this.name = name;
this.surname = surname;
}
//getter and setter goes here
}
控制器类:
@Controller
public ExampleController {
@RequestMapping("/test")
public ModelAndView testObject() {
Person p = new Person("Steven","Hawking");
return new ModelAndView("test", "person", p);
}
}
页面
<h2>${person.name} ${person.surname}</h2>
将显示