The Page class provides the method getHeadElements() for contributing HEAD elements such as JsImport, JsScript, CssImport and CssStyle.
Here is an example of adding HEAD elements to the
MyPage class:
public class MyPage extends Page { public MyPage() { // Add the JavaScript import "/mypage.js" to the page getHeadElements().add(new JsImport("/mypage.js")); // Add some inline JavaScript content to the page getHeadElements().add(new JsScript("alert('Welcome to MyPage');")); // Add the Css import "/mypage.css" to the page getHeadElements().add(new CssImport("/mypage.css")); // Add some inline Css content to the page getHeadElements().add(new CssStyle("body { font-family: Verdana; }")); } ... }
In the example above we added the HEAD elements from the Page constructor,
however you can add HEAD elements from anywhere in the Page including the
event handlers onInit, onGet,
onPost, onRender etc.
Please see getHeadElements()
for more details.
Below is the /my-page.htm template:
<html> <head>$headElements</head> <body> ...$jsElements</body> </html>
The two variables, $headElements and
$jsElements, are automatically made available to the Page
template. These variables references the JavaScript and Css HEAD elements
specified in MyPage.
The following HTML will be rendered (assuming the application context is "/myapp"):
<html> <head> <link rel="stylesheet" type="text/css" href="/myapp/mypage.css"></link> <style rel="stylesheet" type="text/css"> body { font-family: Verdana; } </style> </head> <body> ... <script type="text/javascript" src="/myapp/mypage.js"/> <script type="text/javascript"> alert('Welcome to MyPage'); </script> </body> </html>
A live demo showing how to add HEAD elements to a Page can be seen here.