Foreign Templating Framework
Employment/Purpose
Here describes how to make a ZUL page to be assembled with Ajax in a foreign templating framework, such as Apache Tiles.
ZK supports many powerful layout components, such as portallayout, borderlayout, tablelayout, columnlayout and so on[1]. It is recommended to use them. Of course, read this chapter only if you prefer to use other templating framework.
- ↑ For more information, please refer to ZK Component Reference.
DOCTYPE
To use ZK components correctly, the templating page must specify DOCTYPE as follows.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
...
Make a ZUL page as a fragment
By default, if a ZUL page is requested by the browser directly, it will generate a complete HTML structure, including HTML, HEAD and BODY tags. On the other hand, if the assembling is done by inclusion (javax.servlet.RequestDispatcher's include), a ZUL page will be generated as a HTML fragment without HTML, HEAD, and BODY. For example, if a ZUL page is included by jsp:include
, then it won't generate HTML/HEAD/BODY, such that the following JSP page will be rendered correctly.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%-- a JSP page --%>
<html>
<body>
<jsp:include page="frag.zul"/>
...
In other words, if the result page is assembled when the request is received, you don't need to do anything specially[1]. However, if the assembling is done at the client side by using Ajax to request fragments after loaded, you have to read the following section.
- ↑ You might take a look at Use ZK in JSP for more information.
Request a ZUL page with Ajax
If the templating assembles the page at the client side by using Ajax to get back each fragment, the ZUL page has to do the following:
- Specify <?page complete="true" docType=""?> to disable the generation of HTML/HEAD/BODY and DOCTYPE
- Use the native DIV (
<n:div xmlns:n="native">
) to enclose the whole content.
For example,
<?page complete="true" docType=""?>
<n:div xmlns:n="native">
<window title="whatever content you want"/>
...
</n:div>
Thus, the generated HTML structure won't contain HTML/HEAD/BODY/DOCTYPE and the templating framework would assemble it easily by use of, say, JavaScript's outerHTML
or jQuery's replaceWith
.
Of couse, if the fragment itself is a JSP page and then use inclusion to include a ZUL page (or use ZK JSP Tags), then the generated HTML structure is already a correct HTML fragment (and you don't need to anything described above).
Version History
Version | Date | Content |
---|---|---|
5.0.5 | October, 2010 | ZUL page is able to be generated as a HTML fragment. |