The richlet-mapping Element
Once a richlet is declared,
you could map it to any number of URL by using richlet-mapping
as
depicted below.
<richlet-mapping>
<richlet-name>Test</richlet-name>
<url-pattern>/test</url-pattern>
</richlet-mapping>
<richlet-mapping>
<richlet-name>Test</richlet-name>
<url-pattern>/some/more/*</url-pattern>
</richlet-mapping>
When mapping, you should consider the servlet-mapping
of ZK Loader in
web.xml, for example,
if you want the Richlet work with /path/*
, you may specify the
servlet-mapping in web.xml as follows:
<servlet-mapping>
<servlet-name>zkLoader</servlet-name>
<url-pattern>/path/*</url-pattern>
</servlet-mapping>
and specify the richlet-mapping as follows:
<richlet-mapping>
<richlet-name>Test</richlet-name>
<url-pattern>/*</url-pattern>
</richlet-mapping>
In this case, both Richlet and ZUL will work great. If you swap the url-pattern of servlet-mapping with richlet-mapping, only the Richlet will work well.
Note: Since ZK 7.0.0 release, when use ZK Richlet Filter, the url-pattern of the richlet-mapping should start with the prefix url-pattern in filter-mapping. For example,
In web.xml
<filter>
<filter-name>RichletFilter</filter-name>
<filter-class>org.zkoss.zk.ui.http.RichletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RichletFilter</filter-name>
<url-pattern>/zk/*</url-pattern>
</filter-mapping>
In zk.xml
<richlet-mapping>
<richlet-name>Test</richlet-name>
<url-pattern>/zk/foo/*</url-pattern>
</richlet-mapping>
The URL specified in the url-pattern
element must start with /
. If
the URI ends with /*
, then it is matched to all request with the same
prefix. To retrieve the real request, you can check the value returned
by
org.zkoss.zk.ui.Page#getRequestPath()
of the current page.
public void service(Page page) {
if ("/some/more/hi".equals(page.getRequestPath()) {
...
}
}
Version History
Version | Date | Content |
---|---|---|
ZK 7.0.0 | August 2013 | Support Richlet with Servlet Filter |