java - 在 JSP 中定义类

标签 java jsp class

请不要打我的脸!我知道这与良好的设计背道而驰,但我只是在编写一个测试页来演示一些东西。我们的 webapp 模块(正确地)没有直接访问我们的域类。我不想在 JSP 之外创建整个类,因为该页面仅用于演示目的,而且出于同样的原因,我不想编写大量无关代码。我试图在 JSP 中以通常的方式定义一个类,但那没有用(引发了很多编译时错误)。这是一个快速而肮脏的一次性交易(我会在完成后摆脱它)。我只想知道这是否可能。如果没有,那么我会走很远的路。

<%

 public class Person {
    private int id;
    private int age;
    private String name;

    /*
      ... ctor and getters and setters
    */

 }
%>

我得到的错误:

convert-jsp-to-java:
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------

An error occurred at line: 57 in the generated java file
Syntax error on token "class", invalid VariableDeclarator

An error occurred at line: 73 in the generated java file
The return type is incompatible with Object.getClass()

An error occurred at line: 74 in the generated java file
Syntax error on token "class", Identifier expected

An error occurred at line: 77 in the generated java file
Syntax error on token "class", invalid VariableDeclaratorId

An error occurred at line: 78 in the generated java file
Syntax error on token "this", PrimitiveType expected

An error occurred at line: 78 in the generated java file
Syntax error on token "class", invalid Expression

An error occurred at line: 79 in the generated java file
Syntax error on token "class", invalid Expression

最佳答案

我不明白为什么这是不可能的。 JSP 只是编写 Servlet 的另一种方式,因此您应该能够在 Servlet 中将类创建为静态(或就此而言,非静态)内部类,就像您创建任何其他类一样,使用 <%! %> 惯例。

我能够快速、实用地进行概念验证:

<%@page contentType="text/html" pageEncoding="MacRoman"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<%!
private static class NdBadIdea {
  private final int foo = 42;

  public int getFoo() {
    return foo;
  }
}
%>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=MacRoman">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
        <%=new NdBadIdea().getFoo()%>
    </body>
</html>

关于java - 在 JSP 中定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226218/

相关文章:

python - 在python中将信息从一个实例发送到另一个具有特定名称的实例

javascript - 无法使用 JavaScript 控制与另一个元素共享一个 css 类的 css 元素

java - Ubuntu 32位下编译LuaJava

java - 架构 - 多个 Web 应用程序在相同数据上运行

java - 获取 SessionBean 实例

javascript - 全选/取消全选不适用于单个记录

c++ - 标题互相需要

java - 在自定义 Swing 组件中获得正确的大小调整行为

jsp - 如何从JSP输出HTML <%! ... %> 阻止?

java - Sitemesh 有哪些替代方案可以帮助在 Spring MVC 应用程序中布局 JSP/JSTL 页面页脚/页眉?