I just started learning JSP technology, and came across a wall.
How do you output HTML from a method in <%! ... %> JSP declaration block?
This doesn't work:
<%!
void someOutput() {
out.println("Some Output");
}
%>
...
<% someOutput(); %>
Server says there's no “out”.
U: I do know how to rewrite code with this method returning a string, but is there a way to do this inside <%! void () { } %> ? Though it may be non-optimal, it's still interesting.
You can do something like this:
All you need to do is pass the JspWriter object into your method as a parameter i.e.
Then call it via:
The writer object is a local variable inside _jspService so you need to pass it into your utility method. The same would apply for all the other built in references (e.g. request, response, session).
A great way to see whats going on is to use Tomcat as your server and drill down into the 'work' directory for the '.java' file generated from your 'jsp' page. Alternatively in weblogic you can use the 'weblogic.jspc' page compiler to view the Java that will be generated when the page is requested.
A simple alternative would be the following:
The you could simply use the variable in any way within the jsp code
You can't use the 'out' variable (nor any of the other "predeclared" scriptlet variables) inside directives.
The JSP page gets translated by your webserver into a Java servlet. Inside tomcats, for instance, everything inside scriptlets (which start "<%"), along with all the static HTML, gets translated into one giant Java method which writes your page, line by line, to a JspWriter instance called "out". This is why you can use the "out" parameter directly in scriptlets. Directives, on the other hand (which start with "<%!") get translated as separate Java methods.
As an example, a very simple page (let's call it foo.jsp):
would end up looking something like this (with a lot of the detail ignored for clarity):
too late to answer it but this help others
You can do something like this:
This will output
test 1 2 3
to the page.