请不要打我的脸!我知道这在好的设计面前飞得很快,但我只是在写一个测试页来展示一些东西.我们的webapp模块(正确)无法直接访问我们的域类.我不想在JSP之外创建一个完整的类,因为该页面仅用于演示目的,并且我不想出于同样的原因编写大量无关的代码.我试图在JSP中以通常的方式定义一个类,但这不起作用(抛出了很多编译时错误).这是一个快速肮脏的,一次性的交易(一旦我完成,我将摆脱它).我想知道这是否可行.如果没有,那么我将走很长的路.
<%
public class Person {
private int id;
private int age;
private String name;
/*
... ctor and getters and setters
*/
}
%>
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
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
Run Code Online (Sandbox Code Playgroud)
Jac*_*eow 21
我不明白为什么不可能.JSP只是编写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>
Run Code Online (Sandbox Code Playgroud)
仅供参考:问题中的代码片段声明了一个嵌套类(即一个在方法体内声明的类).没有public关键字是合法的:
<%
class Person {
...
}
%>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44416 次 |
| 最近记录: |