You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by Paul Speed <ps...@progeeks.com> on 2001/10/22 19:48:08 UTC

Re: DO NOT REPLY [Bug 4339] - Cannot use "//" comments in JSP code

Only partially related to the bug, so I'm replying directly instead
of through bugzilla...

Does this mean that JSP uses a different Java language specification?
If so, where can I find this separate specification?  Are there any
other big things like this that are incompatible with normal Java 
syntax?

Thanks,
-Paul Speed

bugzilla@apache.org wrote:
> 
> DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
> RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
> <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4339>.
> ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
> INSERTED IN THE BUG DATABASE.
> 
> http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4339
> 
> Cannot use "//" comments in JSP code
> 
> craig.mcclanahan@sun.com changed:
> 
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>              Status|NEW                         |RESOLVED
>          Resolution|                            |WONTFIX
> 
> ------- Additional Comments From craig.mcclanahan@sun.com  2001-10-22 10:11 -------
> You should not be using "//" comments.  You have absolutely no control over the
> Java code that is generated for your page, so it is your responsibility to use
> well-formed constructs.  In this particular case, that means to use /* */ style
> comment markers so that you can explicitly close them.  Even if we changed
> Tomcat to do what you suggest, depending on this would not be portable and you'd
> have massive problems as soon as you tried to switch to some other container
> that didn't do it.
> 
> Using scriptlets at all can lead you into lots of other problems (such as
> intermixing business logic and presentation logic that makes it very hard to
> maintain and enhance your applications), but that is a whole separate
> discussion.

Re: DO NOT REPLY [Bug 4339] - Cannot use "//" comments in JSP code

Posted by Paul Speed <ps...@progeeks.com>.
Ah,

Sorry.  _That_ makes perfect sense.

It's what I get for not reading the original bug report in more 
detail.

Although, I would expect in the following case...

> When you do something like this:
> 
>   <% System.out.println(); // Hello %> Some template text
> 
> then this gets translated into
> 
>   System.out.println();  // Hello Some template text

To instead get:

System.out.println(); // Hello 
out.print( "Some template text" );

Since "Some template text" is clearly outside of the <% %>, wouldln't
it be turned into generated output instead of code?  Or am I being
pedantic and what you really meant was:

System.out.println(); // Hello out.print( "Some template text" );

or somesuch?

-Paul Speed

"Craig R. McClanahan" wrote:
> 
> On Mon, 22 Oct 2001, Paul Speed wrote:
> 
> > Date: Mon, 22 Oct 2001 13:48:08 -0400
> > From: Paul Speed <ps...@progeeks.com>
> > Reply-To: tomcat-dev@jakarta.apache.org
> > To: tomcat-dev@jakarta.apache.org
> > Subject: Re: DO NOT REPLY [Bug 4339]  - Cannot use "//" comments in JSP
> >     code
> >
> > Only partially related to the bug, so I'm replying directly instead
> > of through bugzilla...
> >
> > Does this mean that JSP uses a different Java language specification?
> > If so, where can I find this separate specification?  Are there any
> > other big things like this that are incompatible with normal Java
> > syntax?
> >
> 
> The JSP specification does not mandate the use of Java as a scripting
> language -- you can use any language you want (as specified by the
> "language" attribute of the <%@ page %> directive).  However, many of the
> features related to scripting are defined *only* for Java.
> 
> Note also that Jasper (the JSP page compiler in Tomcat) only supports Java
> as a scripting language at the moment.
> 
> However, more germane to this bug report:
> 
> * Scriptlets are required to be well-formed according to the
>   rules of the scripting language in use (JSP 1.2, Section 2.11.2).
>   Thus, if you mistakenly leave off a semicolon at the end of a
>   Java statement in a scriptlet, the compilation error you get is
>   your fault.  It's also your fault if the scope of your language
>   element extends outside the closing "%>" delimiter in a manner
>   that causes invalid code to be created (such as mismatching "}"
>   brackets), or the case described in the following point.
> 
> * Scriptlets are translated into the generated code according
>   to the following rule (JSP 1.2, Section 6.4.2):
> 
>     <% scriptlet %>     -->        scriptlet
> 
>   In other words, no newline is added after the "%>" by the page
>   compiler (though the developer could certainly put a newline there).
> 
> When you do something like this:
> 
>   <% System.out.println(); // Hello %> Some template text
> 
> then this gets translated into
> 
>   System.out.println();  // Hello Some template text
> 
> and you get what you pay for.  If you want to use // comments, do this
> instead:
> 
>   <% System.out.println(); // Hello
>   %> Some template text
> 
> and it will work fine.
> 
> > Thanks,
> > -Paul Speed
> >
> 
> Craig
> 
> > bugzilla@apache.org wrote:
> > >
> > > DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
> > > RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
> > > <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4339>.
> > > ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
> > > INSERTED IN THE BUG DATABASE.
> > >
> > > http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4339
> > >
> > > Cannot use "//" comments in JSP code
> > >
> > > craig.mcclanahan@sun.com changed:
> > >
> > >            What    |Removed                     |Added
> > > ----------------------------------------------------------------------------
> > >              Status|NEW                         |RESOLVED
> > >          Resolution|                            |WONTFIX
> > >
> > > ------- Additional Comments From craig.mcclanahan@sun.com  2001-10-22 10:11 -------
> > > You should not be using "//" comments.  You have absolutely no control over the
> > > Java code that is generated for your page, so it is your responsibility to use
> > > well-formed constructs.  In this particular case, that means to use /* */ style
> > > comment markers so that you can explicitly close them.  Even if we changed
> > > Tomcat to do what you suggest, depending on this would not be portable and you'd
> > > have massive problems as soon as you tried to switch to some other container
> > > that didn't do it.
> > >
> > > Using scriptlets at all can lead you into lots of other problems (such as
> > > intermixing business logic and presentation logic that makes it very hard to
> > > maintain and enhance your applications), but that is a whole separate
> > > discussion.
> >

Re: DO NOT REPLY [Bug 4339] - Cannot use "//" comments in JSP code

Posted by "Craig R. McClanahan" <cr...@apache.org>.

On Mon, 22 Oct 2001, Paul Speed wrote:

> Date: Mon, 22 Oct 2001 13:48:08 -0400
> From: Paul Speed <ps...@progeeks.com>
> Reply-To: tomcat-dev@jakarta.apache.org
> To: tomcat-dev@jakarta.apache.org
> Subject: Re: DO NOT REPLY [Bug 4339]  - Cannot use "//" comments in JSP
>     code
>
> Only partially related to the bug, so I'm replying directly instead
> of through bugzilla...
>
> Does this mean that JSP uses a different Java language specification?
> If so, where can I find this separate specification?  Are there any
> other big things like this that are incompatible with normal Java
> syntax?
>

The JSP specification does not mandate the use of Java as a scripting
language -- you can use any language you want (as specified by the
"language" attribute of the <%@ page %> directive).  However, many of the
features related to scripting are defined *only* for Java.

Note also that Jasper (the JSP page compiler in Tomcat) only supports Java
as a scripting language at the moment.

However, more germane to this bug report:

* Scriptlets are required to be well-formed according to the
  rules of the scripting language in use (JSP 1.2, Section 2.11.2).
  Thus, if you mistakenly leave off a semicolon at the end of a
  Java statement in a scriptlet, the compilation error you get is
  your fault.  It's also your fault if the scope of your language
  element extends outside the closing "%>" delimiter in a manner
  that causes invalid code to be created (such as mismatching "}"
  brackets), or the case described in the following point.

* Scriptlets are translated into the generated code according
  to the following rule (JSP 1.2, Section 6.4.2):

    <% scriptlet %>     -->        scriptlet

  In other words, no newline is added after the "%>" by the page
  compiler (though the developer could certainly put a newline there).

When you do something like this:

  <% System.out.println(); // Hello %> Some template text

then this gets translated into

  System.out.println();  // Hello Some template text

and you get what you pay for.  If you want to use // comments, do this
instead:

  <% System.out.println(); // Hello
  %> Some template text

and it will work fine.

> Thanks,
> -Paul Speed
>

Craig


> bugzilla@apache.org wrote:
> >
> > DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
> > RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
> > <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4339>.
> > ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
> > INSERTED IN THE BUG DATABASE.
> >
> > http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4339
> >
> > Cannot use "//" comments in JSP code
> >
> > craig.mcclanahan@sun.com changed:
> >
> >            What    |Removed                     |Added
> > ----------------------------------------------------------------------------
> >              Status|NEW                         |RESOLVED
> >          Resolution|                            |WONTFIX
> >
> > ------- Additional Comments From craig.mcclanahan@sun.com  2001-10-22 10:11 -------
> > You should not be using "//" comments.  You have absolutely no control over the
> > Java code that is generated for your page, so it is your responsibility to use
> > well-formed constructs.  In this particular case, that means to use /* */ style
> > comment markers so that you can explicitly close them.  Even if we changed
> > Tomcat to do what you suggest, depending on this would not be portable and you'd
> > have massive problems as soon as you tried to switch to some other container
> > that didn't do it.
> >
> > Using scriptlets at all can lead you into lots of other problems (such as
> > intermixing business logic and presentation logic that makes it very hard to
> > maintain and enhance your applications), but that is a whole separate
> > discussion.
>


Re: Cannot use "//" comments in JSP code

Posted by Jon Stevens <jo...@latchkey.com>.
on 10/22/01 10:48 AM, "Paul Speed" <ps...@progeeks.com> wrote:

> Only partially related to the bug, so I'm replying directly instead
> of through bugzilla...
> 
> Does this mean that JSP uses a different Java language specification?
> If so, where can I find this separate specification?  Are there any
> other big things like this that are incompatible with normal Java
> syntax?
> 
> Thanks,
> -Paul Speed

This is yet another great reason why you shouldn't embed Java code within
your templates. JSP != Java

-jon