1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.tiles.renderer.impl;
22
23 import java.io.IOException;
24
25 import org.apache.tiles.Attribute;
26 import org.apache.tiles.TilesContainer;
27 import org.apache.tiles.awareness.TilesContainerAware;
28 import org.apache.tiles.context.TilesRequestContext;
29 import org.apache.tiles.renderer.RendererException;
30
31 /***
32 * Renders an attribute that has no associated renderer.
33 *
34 * @version $Rev: 821299 $ $Date: 2009-10-03 14:15:05 +0200 (sab, 03 ott 2009) $
35 * @since 2.1.0
36 * @deprecated Use {@link ChainedDelegateAttributeRenderer}.
37 */
38 public class UntypedAttributeRenderer extends AbstractBaseAttributeRenderer
39 implements TilesContainerAware {
40
41 /***
42 * The Tiles container.
43 */
44 private TilesContainer container;
45
46 /*** {@inheritDoc} */
47 public void setContainer(TilesContainer container) {
48 this.container = container;
49 }
50
51 /*** {@inheritDoc} */
52 @Override
53 public void write(Object value, Attribute attribute,
54 TilesRequestContext request)
55 throws IOException {
56 if (value instanceof String) {
57 String valueString = (String) value;
58 Object[] requestItems = request.getRequestObjects();
59 if (container.isValidDefinition(valueString, requestItems)) {
60 container.render(valueString, requestItems);
61 } else if (valueString.startsWith("/")) {
62 request.dispatch(valueString);
63 } else {
64 request.getWriter().write(valueString);
65 }
66 } else {
67 throw new RendererException(
68 "Cannot render an untyped object attribute");
69 }
70 }
71 }