|
Groovy Documentation | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object groovy.lang.GroovyObjectSupport groovy.lang.Binding groovy.servlet.ServletBinding
public class ServletBinding extends Binding
Servlet-specific binding extension to lazy load the writer or the output stream from the response.
HttpServletRequest
objectHttpServletRequest
objectServletContext
objectrequest.getSession(false)
- can be null!response.getWriter()
response.getOutputStream()
new MarkupBuilder(response.getWriter())
- expandEmptyElements
flag is set to truenew JsonBuilder()
response.getWriter()
should not be
done if a call to response.getOutputStream()
has already occurred or the other way
around. You may wonder then how the above lazy variables can possibly be provided - since
setting them up would involve calling both of the above methods. The trick is catered for
behind the scenes using lazy variables. Lazy bound variables can be requested without side
effects; under the covers the writer and stream are wrapped. That means
response.getWriter()
is never directly called until some output is done using
'out' or 'html'. Once a write method call is done using either of these variable, then an attempt
to write using 'sout' will cause an IllegalStateException
. Similarly, if a write method
call on 'sout' has been done already, then any further write method call on 'out' or 'html' will cause an
IllegalStateException
.
response.getWriter()
is called directly (without using out), then a write method
call on 'sout' will not cause the IllegalStateException
, but it will still be invalid.
It is the responsibility of the user of this class, to not to mix these different usage
styles. The same applies to calling response.getOutputStream()
and using 'out' or 'html'.
request.getRequestDispatcher(path).forward(request, response)
request.getRequestDispatcher(path).include(request, response)
response.sendRedirect(location)
Method Summary | |
---|---|
java.lang.Object
|
ServletBinding(HttpServletRequest request, HttpServletResponse response, ServletContext context)
Initializes a servlet binding. |
void
|
forward(java.lang.String path)
|
java.lang.Object
|
getVariable(java.lang.String name)
@return a writer, an output stream, a markup builder or another requested object |
java.util.Map
|
getVariables()
|
void
|
include(java.lang.String path)
|
void
|
redirect(java.lang.String location)
|
void
|
setVariable(java.lang.String name, java.lang.Object value)
|
Methods inherited from class Binding | |
---|---|
getProperty, getVariable, getVariables, hasVariable, setProperty, setVariable |
Methods inherited from class GroovyObjectSupport | |
---|---|
getMetaClass, getProperty, invokeMethod, setMetaClass, setProperty |
Methods inherited from class java.lang.Object | |
---|---|
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
Method Detail |
---|
public java.lang.Object ServletBinding(HttpServletRequest request, HttpServletResponse response, ServletContext context)
request
- the HttpServletRequest objectresponse
- the HttpServletRequest objectcontext
- the ServletContext object
public void forward(java.lang.String path)
@Override public java.lang.Object getVariable(java.lang.String name)
@Override public java.util.Map getVariables()
public void include(java.lang.String path)
public void redirect(java.lang.String location)
@Override public void setVariable(java.lang.String name, java.lang.Object value)
Groovy Documentation