+ init();
+ }
+
+ private void init() {
+ behaviors = new CompositePageBehavior();
+ }
+
+ /**
+ * Disables caching. This implies expiry of the page from the page map.
+ */
+ protected void disableCaching() {
+ addBehavior(new DisableCachingBehavior());
+ }
+
+ /**
+ * Expires the page immediately. Refresh in the browser will lead to an expired page.
+ */
+ protected void expireImmediately() {
+ addBehavior(new ExpirePageImmediatelyBehavior());
+ }
+
+ /**
+ * Flushes the entitymanager immedately after rendering to make sure that errors are
+ * caught early.
+ * @param aEntityManager Contextual reference to an entity manager.
+ */
+ protected void flushEntityManagerAfterRender(EntityManager aEntityManager) {
+ addBehavior(new FlushEntityManagerBehavior(aEntityManager));
+ }
+
+ /**
+ * Adds a specific behavior to the page.
+ * @param aBehavior Behavior to add.
+ */
+ public void addBehavior(PageBehavior aBehavior) {
+ behaviors.add(aBehavior);
+ }
+
+ @Override
+ protected void onBeforeRender() {
+ behaviors.onBeforeRender(this);
+ super.onBeforeRender();
+ }
+
+ @Override
+ protected void setHeaders(WebResponse aResponse) {
+ super.setHeaders(aResponse);
+ behaviors.setHeaders(this, aResponse);
+ }
+
+ @Override
+ protected void onAfterRender() {
+ super.onAfterRender();
+ behaviors.onAfterRender(this);