Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tapestry Wiki" for 
change notification.

The following page has been changed by BenGidley:
http://wiki.apache.org/tapestry/Tapestry5HowToXhtml

The comment on the change is:
Adding 5.1 instructions

------------------------------------------------------------------------------
+ Tapestry by default generates HTML or XML depending on the content type of 
your application.
+ 
+ The method varies by version
+ 
+  * [#50 Tapestry 5.0 < 13]
+  * [#5013 Tapestry 5.0 > 13]
+  * [#51 Tapestry 5.1]
+ 
+ 
+ == Tapestry 5.0 < 13 ==
+ 
  Step 1:
  
  create your own implementation of MarkupWriterFactory:
@@ -71, +82 @@

  }}}
  
  
+ == Tapestry 5.0 > 13 == 
+ 
  The version above does not work for last version of T5 (something like above 
5.0.13). This is an adaptation of the code working with 5.0.14 :
  
  1/ Replace the XhtmlMarkupWriterFactoryImpl by this one :
@@ -140, +153 @@

        }
  }}}
  
+ 
+ == Tapestry 5.1 ==
+ 
+ Create a class XhtmlMarkupWriterFactory to replace the marker factory
+ 
+ 
+ {{{
+ public class XhtmlMarkupWriterFactory implements MarkupWriterFactory {
+       private class XhtmlMarkupModel extends AbstractMarkupModel {
+               private final Set<String> DONT_ABRV = new HashSet<String>(
+                               Arrays.asList("script", "div", "span", "p", 
"textarea", "select"));
+ 
+               public EndTagStyle getEndTagStyle(String element) {
+                       boolean isDontAbr = DONT_ABRV.contains(element);
+                       return isDontAbr ? EndTagStyle.REQUIRE : 
EndTagStyle.ABBREVIATE;
+ 
+               }
+ 
+               public XhtmlMarkupModel() {
+                       this(false);
+               }
+ 
+               public XhtmlMarkupModel(boolean useApostropheForAttributes) {
+                       super(useApostropheForAttributes);
+               }
+ 
+               /**
+                * Returns true.
+                */
+               public boolean isXML() {
+                       return true;
+               }
+       }
+ 
+       private final PageContentTypeAnalyzer analyzer;
+ 
+       private final RequestPageCache cache;
+ 
+ 
+       private final MarkupModel xmlModel = new XhtmlMarkupModel();
+ 
+       private final MarkupModel xmlPartialModel = new XhtmlMarkupModel(true);
+ 
+       public XhtmlMarkupWriterFactory(PageContentTypeAnalyzer analyzer, 
RequestPageCache cache) {
+               this.analyzer = analyzer;
+               this.cache = cache;
+       }
+ 
+       public MarkupWriter newMarkupWriter(ContentType contentType) {
+               return newMarkupWriter(contentType, false);
+       }
+ 
+       public MarkupWriter newPartialMarkupWriter(ContentType contentType) {
+               return newMarkupWriter(contentType, true);
+       }
+ 
+       @SuppressWarnings({ "UnusedDeclaration" })
+       private MarkupWriter newMarkupWriter(ContentType contentType, boolean 
partial) {
+               boolean isHTML = 
contentType.getMimeType().equalsIgnoreCase("text/html");
+ 
+               MarkupModel model = partial
+                               ? (xmlPartialModel)
+                               : (xmlModel);
+ 
+               // The charset parameter sets the encoding attribute of the XML 
declaration, if
+               // not null and if using the XML model.
+ 
+               return new MarkupWriterImpl(model, contentType.getCharset());
+       }
+ 
+       public MarkupWriter newMarkupWriter(String pageName) {
+               Page page = cache.get(pageName);
+ 
+               ContentType contentType = analyzer.findContentType(page);
+ 
+               return newMarkupWriter(contentType);
+       }
+ 
+ }
+ }}}
+ 
+ Then add to your AppModule
+ 
+ {{{
+         public static void contributeAlias(
+                       Configuration<AliasContribution<MarkupWriterFactory>> 
configuration, PageContentTypeAnalyzer analyzer,
+                       RequestPageCache cache) {
+ 
+               
configuration.add(AliasContribution.create(MarkupWriterFactory.class,
+                               new XhtmlMarkupWriterFactory(analyzer, cache)));
+       }
+ }}}
+ 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tapestry.apache.org
For additional commands, e-mail: dev-h...@tapestry.apache.org

Reply via email to