Here are a few examples of what JSPPP can do right now.
So how about starting off by showing proper formatting in a JSP that
has JavaScript embedded inside Java? Since I'm showing the input and
output side by side, I used a smaller line length. The default line
length would output the entire jsp:useBean tag on one line. JSPPP turns
this:
|
into this:
|
<jsp:useBean id="theBean" scope="request" class="package.class" />
<HTML>
<HEAD>
<TITLE>Java with Embedded JavaScript Example</TITLE>
</HEAD>
<BODY>
<% if (theBean.someStuff()) { %>
<SCRIPT TYPE="Javascript">
function foo() {
doThis();
}
</SCRIPT>
<% } else { %>
<SCRIPT TYPE="Javascript">
function foo() {
doThisInstead();
}
</SCRIPT>
<% } %>
</BODY>
</HTML>
|
|
<jsp:useBean
id="theBean"
scope="request"
class="package.class"
/>
<HTML>
<HEAD>
<TITLE>
Java with Embedded JavaScript Example
</TITLE>
</HEAD>
<BODY>
<% if (theBean.someStuff()) { %>
<SCRIPT TYPE="Javascript">
function foo() {
doThis();
}
</SCRIPT>
<% } else { %>
<SCRIPT TYPE="Javascript">
function foo() {
doThisInstead();
}
</SCRIPT>
<% } %>
</BODY>
</HTML>
|
|
Or in the other direction? JavaScript that has embedded Java. JSPPP turns
this:
|
into this:
|
<jsp:useBean id="theBean" scope="request"
class="package.class" />
<HTML>
<HEAD>
<TITLE>JavaScript with Embedded Java Example
</TITLE>
<SCRIPT language="JavaScript">
function foo() {
<% if (theBean.isDoThis()) { %>
doThis();
<% } else { %>
doThat();
<% } %>
}
</SCRIPT>
</HEAD>
<BODY>
</BODY>
</HTML>
|
|
<jsp:useBean
id="theBean"
scope="request"
class="package.class"
/>
<HTML>
<HEAD>
<TITLE>
JavaScript with Embedded Java Example
</TITLE>
<SCRIPT language="JavaScript">
function foo() {
<% if (theBean.isDoThis()) { %>
doThis();
<% } else { %>
doThat();
<% } %>
}
</SCRIPT>
</HEAD>
<BODY></BODY>
</HTML>
|
|
Now for something more interesting. How about some Struts tags within
JavaScript? Please note the extra indent layer for the attributes of
the tags that wouldn't fit in the line length, and the extra space
after the <logic:iterate> tag since it has information inside
it. If the tag didn't contain elements, this extra space would not
have been written. Again, JSPPP was run with a small line length for
these to fit side by side. JSPPP turns
this:
|
into this:
|
<html>
<head><title>An example with JSP tags, Struts tags and
using the left angle bracket as a less than sign with
space and without space in JavaScript.</title>
<script language="javascript">
function test() {
var i = 0;
var j = 1;
if (i<j) {
<logic:iterate indexId="index" id="bean"
name="someFormBean" type="org.example.some.form.Class"
property="someProperty">
<%= bean.getSomeProperty() %>
if (i < j) {
Note: <bean:write id="someFormBean"
property="someProperty" />
}
</logic:iterate>
}
}</script></head><body></body></html>
|
|
<html>
<head>
<title>
An example with JSP tags, Struts tags and
using the left angle bracket as a less than
sign with space and without space in
JavaScript.
</title>
<script language="javascript">
function test() {
var i = 0;
var j = 1;
if (i<j) {
<logic:iterate
indexId="index"
id="bean"
name="someFormBean"
type="org.example.some.form.Class"
property="someProperty">
<%= bean.getSomeProperty() %>
if (i < j) {
Note:
<bean:write
id="someFormBean"
property="someProperty"
/>
}
</logic:iterate>
}
}
</script>
</head>
<body></body>
</html>
|
|
Anchor tags have special spacing requirements. JSPPP preserves
whitespace before and after end anchor tags so that you don't end up
with unwanted results like a space after your link text that's also
part of the link. Here's an example of a link which is
incorrectly formatted
. There's a space between the link text and the period, which is
part of the link. Here's an example of a link which is
correctly formatted.
There is no extra space. JSPPP handles spacing around end tags
in a special way so that whitespace which is present will be
preserved, and whitespace which is not present will be preserved.
The emphasis below indicates that in the actual HTML, the tag has
< and > in it so that it doesn't confuse the parser
or the browser. JSPPP turns
this:
|
into this:
|
<html>
<head>
<title>Anchor tags with various spacing.</title>
</head>
<body>
<p>
A link with
<a href="example.com">text inside</a>, a comma
afterwards, and still more text should be
rendered with the comma immediately after the
link.
</p>
<p>
A link with <a href="example.com">text inside</a>
and no comma afterwards, however, can be free to
roam completely on it's own line, with nothing
after it.
</p>
<p>
A link with <a href="example.com">so much text
inside that it has to wrap a line and continue on
the next line must have the final </a> tag
next to the last word</a>, with no whitespace,
rather than on it's own line. A comma should
also appear next to the end </a> tag, with
no whitespace in between them.
</p>
</body>
</html>
|
|
<html>
<head>
<title>Anchor tags with various spacing.</title>
</head>
<body>
<p>
A link with
<a href="example.com">text inside</a>,
a comma afterwards, and still more text should be
rendered with the comma immediately after the
link.
</p>
<p>
A link with
<a href="example.com">text inside</a>
and no comma afterwards, however, can be free to
roam completely on it's own line, with nothing
after it.
</p>
<p>
A link with
<a href="example.com">
so much text inside that it has to wrap a line
and continue on the next line must have the
final </a> tag next to the last word</a>,
with no whitespace, rather than on it's own line.
A comma should also appear next to the end
</a> tag, with no whitespace in between
them.
</p>
</body>
</html>
|
|
JSPPP is available under the GNU General Public License. JSPPP is
©2002-2007 Christopher Evans. Use the Contact Me link in the link bar
to e-mail me.