2010-02-09 5 views
9

제 얼굴을 때려 눕히지 마십시오! 나는 이것이 좋은 디자인에 직면했다는 것을 알고 있지만, 단순히 뭔가를 보여주기위한 테스트 페이지를 작성하고 있습니다. 우리의 webapp 모듈 (정확하게)은 도메인 클래스에 직접 액세스 할 수 없습니다. 페이지가 데모 목적으로 사용되기 때문에 JSP 외부에서 전체 클래스를 생성하고 싶지 않습니다. 같은 이유로 많은 외부 코드를 작성하고 싶지 않습니다. 나는 JSP에서 일반적인 방식으로 클래스를 정의하려고 시도했지만, 작동하지 않았다. (많은 컴파일 타임 오류가 발생했다.) 이것은 빠른 n 더러운, 한 번만 거래 (내가 끝나면 그것을 없앨 것입니다). 나는 이것이 가능한지 아닌지 알고 싶다. 그렇지 않다면, 나는 먼 길을 갈 것입니다.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 
+0

이있다. –

답변

19

이 가능하지 않을 것입니다 왜 표시되지 않습니다. 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> 
+1

정적 인 클래스가 더 좋습니다. IMO. +1 –

+0

아, 내가 잘못한 것을 본다. 느낌표가 없다. 고맙습니다! @ 식초, 예'정적'은 더 나은 옵션처럼 보입니다. 감사! –

+0

Damit, <%! %> 안에 %><%를 사용할 수 없습니다. 이게 정상인가? –

8

: 코드 질문에서 조각이 메서드 본문 내에서 선언 된 중첩 클래스 (즉, 클래스를 선언

나는 개념의 빠르고, 기능, 증거를 할 수 있었다). 그것은 public 키워드없이 법적 될 것이다 : 어떤 이야기가 * 당신이 잘못 수행되지 수도 무엇 * 소스 코드없이

<%  
    class Person { 
     ... 
    } 
%> 
+0

아, 그 정보에 감사드립니다! –