@HtmlDoc
The {@link oajr.annotation.HtmlDoc @HtmlDoc} annotation is used to customize the HTML
view of your serialized POJOs.
It's used in the following locations:
- {@link oajr.annotation.RestResource#htmldoc() RestResource(htmldoc)}
- {@link oajr.annotation.RestMethod#htmldoc() RestMethod(htmldoc)}
The annotation itself is just a convenience for setting configuration properties set
on the {@link oaj.html.HtmlDocSerializer} class.
For example, the following two pieces of code are equivalent:
// Title defined via property.
@RestResource(
properties={
@Property(name=HTMLDOC_title, value="My Resource Page")
}
)
// Title defined via @HtmlDoc annotation.
@RestResource(
htmldoc=@HtmlDoc(
title="My Resource Page"
)
)
The purpose of these annotation is to populate the HTML document view which by default consists of the following
structure:
<html>
<head>
<style type='text/css'>
CSS styles and links to stylesheets
</style>
</head>
<body>
<header>
Page header
</header>
<nav>
Navigation links
</nav>
<aside>
Side-bar text
</aside>
<article>
Contents of serialized object
</article>
<footer>
Footer message
</footer>
</body>
</html>
The outline above is controlled by the {@link oaj.html.HtmlDocTemplate} interface
which can be overridden via the {@link oajr.annotation.HtmlDoc#template @HtmlDoc(template)} annotation.
The HelloWorldResource class was an example of the @HtmlDoc annotation in use:
/**
* Sample REST resource that prints out a simple "Hello world!" message.
*/
@RestResource(
path="/helloWorld",
htmldoc=@HtmlDoc(
navlinks={
"up: request:/..",
"options: servlet:/?method=OPTIONS"
},
aside={
"<div style='max-width:400px' class='text'>",
" <p>This page shows a resource that simply response with a 'Hello world!' message</p>",
" <p>The POJO serialized is a simple String.</p>",
"</div>"
}
)
)
public class HelloWorldResource extends BasicRestServlet {...}
SVL variables can be used in any of these annotations:
@RestResource(
path="/helloWorld",
// Register a config file.
config="MyConfig.cfg",
htmldoc=@HtmlDoc(
navlinks={
"up: request:/..",
"options: servlet:/?method=OPTIONS",
// Add a nav link to view the source code for this class.
"source: $C{Source/gitHub}/org/apache/juneau/examples/rest/$R{servletClassSimple}.java"
},
aside={
// Localize our messages.
"<div style='max-width:400px' class='text'>",
" <p>$L{localizedMessage1}</p>",
" <p>$L{localizedMessage2}</p>",
"</div>"
}
)
)
public class HelloWorldResource extends BasicRestServlet {...}
See Also:
- {@link oajr.annotation.HtmlDoc}
- {@link oajr.HtmlDocBuilder}