1
2
3
4 package org.rcfaces.core.internal.facelets;
5
6 import java.io.IOException;
7 import java.io.Writer;
8
9 import javax.faces.FacesException;
10 import javax.faces.application.ViewHandler;
11 import javax.faces.component.UIComponent;
12 import javax.faces.context.FacesContext;
13
14 import org.rcfaces.core.internal.renderkit.WriterException;
15 import org.rcfaces.core.internal.renderkit.tools.AbstractTreeRendererProcessor;
16 import org.rcfaces.core.internal.tools.ComponentTools;
17
18
19
20
21
22
23 public class FaceletsTreeRendererProcessor extends
24 AbstractTreeRendererProcessor {
25
26 public FaceletsTreeRendererProcessor(FacesContext facesContext) {
27 super(facesContext);
28 }
29
30 public void encodeChildrenRecursive(UIComponent component,
31 String componentId) throws WriterException {
32
33 ViewHandler viewHandler = facesContext.getApplication()
34 .getViewHandler();
35 if ((viewHandler instanceof FaceletViewHandler) == false) {
36 throw new FacesException(
37 "To use AJAX feature with Facelets, you must declare org.rcfaces.core.internal.facelets.FaceletViewHandler as view handler !");
38 }
39
40 try {
41 ((FaceletViewHandler) viewHandler).buildFaceletViewRoot(
42 facesContext, facesContext.getViewRoot());
43
44 } catch (IOException e) {
45 throw new WriterException(null, e, component);
46 }
47
48 component = ComponentTools.getForComponent(facesContext, componentId,
49 facesContext.getViewRoot());
50
51 ComponentTools.encodeChildrenRecursive(facesContext, component);
52
53 }
54
55 public boolean hasSaveStateFieldMarker(String content) {
56 return false;
57 }
58
59 public void writeFilteredContent(Writer writer, String content)
60 throws IOException {
61
62 writer.write(content);
63 }
64
65 }