Modified: websites/production/tapestry/content/release-notes-53.html
==============================================================================
--- websites/production/tapestry/content/release-notes-53.html (original)
+++ websites/production/tapestry/content/release-notes-53.html Mon Nov 25
20:12:33 2024
@@ -144,11 +144,11 @@
<!-- /// Content Start -->
<div id="content">
<div id="ConfluenceContent"><p>This is the
consolidated list of changes between Tapestry versions 5.2 and 5.3. To upgrade
from 5.2 to 5.3, most users who are not using deprecated features will be able
to just update the Maven dependency in their POM file (or <a
href="release-notes-53.html">download</a> the new JAR file) and the new version
will just work. However, please read carefully below before upgrading, and also
review the <a href="how-to-upgrade.html">How to Upgrade</a>
instructions.</p><p><strong>Contents</strong></p><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1729242735406 {padding: 0px;}
-div.rbtoc1729242735406 ul {margin-left: 0px;}
-div.rbtoc1729242735406 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1732565539046 {padding: 0px;}
+div.rbtoc1732565539046 ul {margin-left: 0px;}
+div.rbtoc1732565539046 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1729242735406">
+/*]]>*/</style></p><div class="toc-macro rbtoc1732565539046">
<ul class="toc-indentation"><li><a
href="#ReleaseNotes5.3-BreakingChanges">Breaking Changes</a></li><li><a
href="#ReleaseNotes5.3-NewFeatures">New Features</a></li><li><a
href="#ReleaseNotes5.3-Sub-tasksCompleted">Sub-tasks Completed</a></li><li><a
href="#ReleaseNotes5.3-BugsFixed">Bugs Fixed</a></li><li><a
href="#ReleaseNotes5.3-ImprovementsMade">Improvements Made</a></li><li><a
href="#ReleaseNotes5.3-NewFeaturesImplemented">New Features
Implemented</a></li><li><a href="#ReleaseNotes5.3-TasksCompleted">Tasks
Completed</a></li></ul>
</div><h2 id="ReleaseNotes5.3-BreakingChanges">Breaking
Changes</h2><p>Tapestry now depends on Servlet API version <strong>2.5</strong>
(prior releases worked with 2.4).</p><p>Tapestry no longer supports the ability
to inject the component id into a String field. This was rarely (if ever) used
functionality that caused unwanted conflicts elsewhere. When a component needs
to know its component id, it may inject the <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ComponentResources.html">ComponentResources</a>
object, and invoke <code>getCompleteId()</code>.</p><p>Tapestry templates
without a <!DOCTYPE> are treated a bit differently in Tapestry 5.3; they
are treated as if they have the HTML5 doctype (<code><!DOCTYPE
html></code>). See further notes about <a
href="component-templates.html">component templates</a>.</p><p>Many classes and
interfaces that were deprecated in prior releases of Tapestry have been removed
in Tapestry 5.3.
See <a class="external-link"
href="https://issues.apache.org/jira/browse/TAP5-1432">the full list</a>. As
always, you should use your IDE to find and replace all deprecated items
<em>before</em> you upgrade. The following are the most significant of
these:</p><ul><li>@IncludeJavaScriptLibrary and @IncludeStylesheet annotations
(replaced by @<a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/Import.html">Import</a>)</li><li>@ApplicationState
annotation (replaced with @<a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/SessionState.html">SessionState</a>)</li><li>"validateForm"
event triggered by Form component (replaced with "validate"
event)</li><li>Code and constants related to page pooling</li></ul><p>In
addition, some of the abstract base classes used with the tapestry-func library
have changed into interfaces; you will want to recompile, but may also need to
adjust your code,
depending on your compiler settings and use of the standard Java @Override
annotation.</p><p>Because of the upgrade to Prototype 1.7, existing JavaScript
that uses <code>value.toJSON()</code> may break; replace with
<code>Object.toJSON(value)</code>.</p><p>Some number of interfaces and APIs in
Tapestry 5.3 will be removed in Tapestry 5.4 or later. These
include:</p><ul><li>The <a class="external-link"
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/RenderSupport.html">RenderSupport</a>
environmental (replaced with the <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/javascript/JavaScriptSupport.html">JavaScriptSupport</a>
environmental)</li><li>The <a class="external-link"
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html">MultiZoneUpdate</a>
object, replaced with <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/ajax/AjaxR
esponseRenderer.html">AjaxResponseRenderer</a></li><li>ClassFactory service
and ClassFab interface (replaced with the <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/services/PlasticProxyFactory.html">PlasticProxyFactory</a>
service and <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/plastic/PlasticClass.html">PlasticClass</a>
interface)</li><li>The "suppress redirects" functionality, which allows
component event requests to respond directly with HTML, as in Tapestry
4.</li></ul><h2 id="ReleaseNotes5.3-NewFeatures">New Features</h2><h3
id="ReleaseNotes5.3-Underscore.js">Underscore.js</h3><p>Tapestry now bundles <a
class="external-link" href="http://underscorejs.org/"
rel="nofollow">Underscore.js</a>, a useful library for expressive functional
programming in the browser. It is used in <em>no conflict mode</em>, made
available as the <code>T5._</code> object.</p><h3 id="ReleaseNotes5.3-UserAlerts
">User Alerts</h3><p>Tapestry now has a central mechanism for handling user
alerts; this includes the AlertManager service and the Alerts component. Just
add an Alerts component to your application's standard layout component and
Tapestry takes care of the rest. Alerts can be added during both traditional
and Ajax requests, and may be transient (displayed for a few seconds), normal,
or sticky (persist until the user expressly dismisses them). Alerts support
three severities: info, warn(ing) and error; the look and feel can be
customized by overriding Tapestry's default CSS rules.</p><h3
id="ReleaseNotes5.3-Renderingcomments">Rendering comments</h3><p>It is now
possible to have Tapestry emit rendering comments; these are comments (such as
<code><!--BEGIN Index:loop (context:Index.tml, line 15)--></code>) that
can assist you in debugging markup output on the client-side. This is enabled
for all requests using the configuration symbol
<code>tapestry.component-render-tracing-enabl
ed</code>, and can be added to any request by adding the query parameter
<code>t:component-trace=true</code> to the URL. This will significantly
increase the size of the rendered markup, but can be very helpful with complex
layouts to determine which component was responsible for which portion of the
rendered page.</p><h3
id="ReleaseNotes5.3-Adaptableservicecontributions">Adaptable service
contributions</h3><p>When making contributions to a service, you are no longer
restricted to contributing a value that is assignable to the type associated
with the configuration; objects of any type may be contributed, and the
TypeCoercer service is used to coerce the value to the configuration's
type.</p><h3 id="ReleaseNotes5.3-Componentdebuggingimprovements">Component
debugging improvements</h3><p>Because of how Tapestry instruments your pages
and components, using a debugger has been difficult with Tapestry page and
component classes; any mutable field shows its default value in the debugger,
regardless of what has been written to the field or read out of it. In
Tapestry 5.3, when in <em>development mode</em>, Tapestry now shadows values
read from or written to such fields into the fields themselves (this has also
been fixed in the 5.2.5 maintenance release). This shadowing does not occur in
production, to avoid potential memory leaks.</p><h3
id="ReleaseNotes5.3-Reloadingdisabledinproduction">Reloading disabled in
production</h3><p>Tapestry no longer checks for changes to Tapestry component
class files, templates, or message catalogs in production mode. It is assumed
that Tapestry applications are packaged as WAR files in production, and that
changing the WAR file causes the servlet container to redeploy the entire
application. This change is to improve throughput and reduce memory consumption
in production applications.</p><h3
id="ReleaseNotes5.3-String-to-Enumcoercions">String-to-Enum
coercions</h3><p>The TypeCoercer service now automatically generates
String-to-Enum c
oercions without requiring a specific contribution. This coercion is case
insensitive. A contribution is still allowed, and will take priority over the
default coercion, but is only necessary to support "aliases" for enum values
outside those defined by the enum type itself.</p><h3
id="ReleaseNotes5.3-JavaScriptandCSSminimization">JavaScript and CSS
minimization</h3><p>A new optional library, tapestry-yuicompressor, has been
added. This library adds support for compressing JavaScript libraries and CSS
files using <a class="external-link"
href="http://developer.yahoo.com/yui/compressor/" rel="nofollow">the
YUICompressor library</a>.</p><h3
id="ReleaseNotes5.3-ComponentClassTransformWorkerService">ComponentClassTransformWorker
Service</h3><p>The type of this service has changed from <a
class="external-link"
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/services/ComponentClassTransformWorker.html">ComponentClassTransformWorker</a>
to <a class="external-link" href="h
ttp://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/transform/ComponentClassTransformWorker2.html">ComponentClassTransformWorker2</a>.
Contributions of type ComponentClassTransformWorker will automatically be
coerced to the new ComponentClassTransformWorker2 interface. However, if you
use the @Contribute annotation to mark the method that makes contributions, you
will need to update the annotation to indicate the new service interface. If
you followed the naming convention, and named your method
<code>contributeComponentClassTransformWorker()</code>, you don't need to
change anything.</p><h3
id="ReleaseNotes5.3-AjaxResponseRenderer">AjaxResponseRenderer</h3><p>The <a
class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.html">AjaxResponseRenderer</a>
service makes it easier to customize the partial page response generated when
updating a <a class="external-link" href="http://tapestry.apache.org/5.3/
apidocs/org/apache/tapestry5/corelib/components/Zone.html">Zone</a> component,
replacing the <a class="external-link"
href="http://tapestry.apache.org/5.2/apidocs/org/apache/tapestry5/ajax/MultiZoneUpdate.html">MultiZoneUpdate</a>
object as an event handler method return value.</p><h3
id="ReleaseNotes5.3-TapestryJavaDoc">Tapestry JavaDoc</h3><p>Tapestry now
includes a new library, tapestry-javadoc, that replaces the old Maven-based
component report. Simply by placing a <code>@tapestrydoc</code> annotation into
your component's JavaDoc, Tapestry will generate complete documentation as part
of JavaDoc ... no more switching back and forth between JavaDoc and the
Maven-generated component report, and no more reliance on Maven for component
documentation.</p><h3 id="ReleaseNotes5.3-Skinning/ThemingSupport">Skinning /
Theming Support</h3><p>Tapestry now adds the ability to skin and/or theme your
pages and components. Its an extension of how Tapestry manages pages per
locale, but adds new
application-defined <em>axes</em> along with rules to find the resources. See
<a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentResourceSelector.html">ComponentResourceSelector</a>
and <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/pageload/ComponentRequestSelectorAnalyzer.html">ComponentRequestSelectorAnalyzer</a>.</p><p>There's
also a new <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Dynamic.html">Dynamic</a>
component, which uses an external template, not a Tapestry template, which can
be selected at runtime.</p><h3 id="ReleaseNotes5.3-TreeComponent">Tree
Component</h3><p>Tapestry finally has a proper <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Tree.html">Tree</a>
component for navigating hierarchical data. It's efficient and Ajax-en
abled, and fully customizable.</p><h3
id="ReleaseNotes5.3-FormCancelledEvent">Form Cancelled Event</h3><p>Form
components now recognize when the client-side form was cancelled. A new
"cancelled" event is triggered early in the submission process, which allows
the page to bypass all property updates and input validations, when
desired.</p><h3
id="ReleaseNotes5.3-ImplicitOrderedConfigurationConstraints">Implicit
OrderedConfiguration Constraints</h3><p>When using <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/ioc/OrderedConfiguration.html">OrderedConfiguration.add()</a>
with no constraints, Tapestry will now implicitly order the added element
after the previously added element, within the same method. In prior releases,
such elements were added with no constraints. This makes it easier to
contribute a group of related items with an implicit ordering.</p><h3
id="ReleaseNotes5.3-NewComponentClassValidations">New Component Class
Validations</h3>
<p>Tapestry includes new validations of component classes to help cut down on
many common errors; Tapestry now checks that component ids referenced by an
event handler method (the <code>From</code><em>component id</em> part of the
method name) actually matches a component defined in the template ... this
quickly identifies typos in method names. This check can be disabled with a
configuration symbol, as existing 5.2 apps may have such errors and still
operate (that is, they may have <em>dead</em> event handler methods that will
never be invoked).</p><h3 id="ReleaseNotes5.3-ApplicationFolder">Application
Folder</h3><p>Tapestry can now be configured to execute inside a folder, which
can be useful when running Tapestry inside a web application that contains
other servlets or filters, as a way to prevent conflicts.</p><h3
id="ReleaseNotes5.3-ImprovedQuickstartArchetype">Improved Quickstart
Archetype</h3><p>The Maven quickstart archetype has been brought up to date,
and now demonstrates
several new bits of common useful functionality. It also generates support for
<a class="external-link" href="http://gradle.org/" rel="nofollow">Gradle</a> as
the build tool.</p><h3 id="ReleaseNotes5.3-WhitelistedPages">Whitelisted
Pages</h3><p>The new @<a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/annotations/WhitelistAccessOnly.html">WhitelistAccessOnly</a>
annotation marks a page as accessible only from white-listed clients; the
rules for the whitelist are <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/services/security/ClientWhitelist.html">extensible</a>.
The default rule is that only access from localhost is on the white-list. Use
this annotation on pages that may expose sensitive data, such as built-in
application dashboards and the like.</p><h3
id="ReleaseNotes5.3-PageCatalog">Page Catalog</h3><p>Tapestry applications now
include a built-in "PageCatalog" page, which lists all the loaded
pages of the application, with details about construction time and number of
components. The page requires whitelist access (see above comment), and some
functionality is only available in development mode. PageCatalog can be used to
load all pages of your application, which is useful to quickly spot problems in
your pages ... especially useful when upgrading from a prior release of
Tapestry.</p><h3 id="ReleaseNotes5.3-Client-SideJavaScriptLogging">Client-Side
JavaScript Logging</h3><p>The integrated Blackbird client-side console has been
removed. In its place are the floating console messages combined with logging
to the Firebug or WebKit console. Tapestry no longer captures JavaScript
initialization exceptions, so that they may be properly reported to the native
console. These changes should make debugging client-side JavaScript much
easier.</p><p>In addition, Tapestry will now display a pop-up window containing
the full exception report for a server-side error that occurs during
an Ajax request, which makes debugging server-side problems that occur as part
of an Ajax request <em>significantly</em> easier. Note that this logic is tied
to performing a <a class="external-link"
href="http://tapestry.apache.org/5.3/apidocs/org/apache/tapestry5/corelib/components/Zone.html">Zone</a>
update.</p><h2 id="ReleaseNotes5.3-Sub-tasksCompleted">Sub-tasks
Completed</h2><p>  </p><h2 id="ReleaseNotes5.3-BugsFixed">Bugs
Fixed</h2><p>  </p><h2
id="ReleaseNotes5.3-ImprovementsMade">Improvements
Made</h2><p>  </p><h2 id="ReleaseNotes5.3-NewFeaturesImplemented">New
Features Implemented</h2><p>  </p><h2
id="ReleaseNotes5.3-TasksCompleted">Tasks
Completed</h2><p>  </p></div>
</div>
Modified: websites/production/tapestry/content/release-upgrade-faq.html
==============================================================================
--- websites/production/tapestry/content/release-upgrade-faq.html (original)
+++ websites/production/tapestry/content/release-upgrade-faq.html Mon Nov 25
20:12:33 2024
@@ -144,11 +144,11 @@
<!-- /// Content Start -->
<div id="content">
<div id="ConfluenceContent"><h1
id="ReleaseUpgradeFAQ-ReleaseUpgrade">Release Upgrade</h1><p>Main Article: <a
href="release-upgrade-faq.html">Release Upgrade FAQ</a></p><h2
id="ReleaseUpgradeFAQ-Contents">Contents</h2><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1729242736381 {padding: 0px;}
-div.rbtoc1729242736381 ul {margin-left: 0px;}
-div.rbtoc1729242736381 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1732565540114 {padding: 0px;}
+div.rbtoc1732565540114 ul {margin-left: 0px;}
+div.rbtoc1732565540114 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1729242736381">
+/*]]>*/</style></p><div class="toc-macro rbtoc1732565540114">
<ul class="toc-indentation"><li><a
href="#ReleaseUpgradeFAQ-WhydoIgetanexceptionaboutorg.apache.tapestry5.internal.services.RequestPathOptimizerafterupgradingto5.2?">Why
do I get an exception about
org.apache.tapestry5.internal.services.RequestPathOptimizer after upgrading to
5.2?</a></li></ul>
</div><h2
id="ReleaseUpgradeFAQ-WhydoIgetanexceptionaboutorg.apache.tapestry5.internal.services.RequestPathOptimizerafterupgradingto5.2?">Why
do I get an exception about
org.apache.tapestry5.internal.services.RequestPathOptimizer after upgrading to
5.2?</h2><p>Although Tapestry works very hard to keep backwards compatibility
between releases for <em>public</em> APIs, all <em>internal</em> APIs are
subject to change. This error is commonly due to the use of the ChenilleKit
library, which makes use of some internal APIs. You must also upgrade your
ChenilleKit dependency when moving from Tapestry 5.1 to 5.2 or later. See the
<a class="external-link"
href="http://tapestry.markmail.org/thread/3cj2wuvl4idnpmjr"
rel="nofollow">complete discussion of this from the Tapestry user mailing
list</a>.</p></div>
</div>
Modified: websites/production/tapestry/content/request-processing-faq.html
==============================================================================
--- websites/production/tapestry/content/request-processing-faq.html (original)
+++ websites/production/tapestry/content/request-processing-faq.html Mon Nov 25
20:12:33 2024
@@ -144,11 +144,11 @@
<!-- /// Content Start -->
<div id="content">
<div id="ConfluenceContent"><h1
id="RequestProcessingFAQ-RequestProcessing">Request Processing</h1><h2
id="RequestProcessingFAQ-Contents">Contents</h2><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1729242733514 {padding: 0px;}
-div.rbtoc1729242733514 ul {margin-left: 0px;}
-div.rbtoc1729242733514 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1732565537121 {padding: 0px;}
+div.rbtoc1732565537121 ul {margin-left: 0px;}
+div.rbtoc1732565537121 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1729242733514">
+/*]]>*/</style></p><div class="toc-macro rbtoc1732565537121">
<ul class="toc-indentation"><li><a
href="#RequestProcessingFAQ-HowdoIgetTapestrytonothandlearequest?">How do I get
Tapestry to not handle a request?</a></li></ul>
</div><h2 id="RequestProcessingFAQ-HowdoIgetTapestrytonothandlearequest?">How
do I get Tapestry to <strong>not</strong> handle a request?</h2><p>Often, when
<a href="integration-with-existing-applications.html">integrating with outside
libraries, or working with legacy code</a>, you will want Tapestry to ignore a
request and let the normal servlet or other processing handle the
request.</p><p>The easy way to do this is to contribute a regular expression to
the <a href="configuration.html">IgnoredPathsFilter service</a>, whose job is
to exclude some requests.</p><div class="code panel pdl" style="border-width:
1px;"><div class="codeContent panelContent pdl">
<pre><code class="language-java">public static void
contributeIgnoredPathsFilter(Configuration<String> configuration)
Modified: websites/production/tapestry/content/security-faq.html
==============================================================================
--- websites/production/tapestry/content/security-faq.html (original)
+++ websites/production/tapestry/content/security-faq.html Mon Nov 25 20:12:33
2024
@@ -144,11 +144,11 @@
<!-- /// Content Start -->
<div id="content">
<div id="ConfluenceContent"><h1
id="SecurityFAQ-Security">Security</h1><p>Main Article: <a
href="security.html">Security</a></p><h2
id="SecurityFAQ-Contents">Contents</h2><p><style type="text/css">/*<![CDATA[*/
-div.rbtoc1729242739112 {padding: 0px;}
-div.rbtoc1729242739112 ul {margin-left: 0px;}
-div.rbtoc1729242739112 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1732565542055 {padding: 0px;}
+div.rbtoc1732565542055 ul {margin-left: 0px;}
+div.rbtoc1732565542055 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1729242739112">
+/*]]>*/</style></p><div class="toc-macro rbtoc1732565542055">
<ul class="toc-indentation"><li><a
href="#SecurityFAQ-Thebuilt-inDashboardpagearevisibleinmyproductionapplicationandIdon'twantthemtobe,whatcanIdo?">The
built-in Dashboard page are visible in my production application and I don't
want them to be, what can I do?</a></li></ul>
</div><div class="aui-label" style="float:right" title="Related Articles">
Modified: websites/production/tapestry/content/session-storage.html
==============================================================================
--- websites/production/tapestry/content/session-storage.html (original)
+++ websites/production/tapestry/content/session-storage.html Mon Nov 25
20:12:33 2024
@@ -190,11 +190,11 @@
<p>Ordinary <a href="persistent-page-data.html">page-persistent
fields</a></p><p>won't work for this, since persistent fields are available
only to a specific page, not shared across multiple pages.</p><p>Tapestry
provides two mechanisms for storing such data: Session State Objects and
Session Attributes. When deciding between the two, it's best to use Session
State Objects for complex objects, and Session Attributes for simple
types.</p><h2 id="SessionStorage-SessionStateObjects">Session State
Objects</h2><p>With a Session State Object (SSO), the value is automatically
stored outside the page; with the default storage strategy, it is stored in the
session. Such a value is global to all pages <em>for the same user</em>, but is
stored separately for different users.</p><p>A field holding an SSO is marked
with the @<a class="external-link"
href="http://tapestry.apache.org/current/apidocs/org/apache/tapestry5/annotations/SessionState.html">SessionState</a>
annotation.</p><div class="na
vmenu" style="float:right; background:white; margin:3px; padding:3px">
<div class="panel" style="border-width: 1px;"><div class="panelHeader"
style="border-bottom-width: 1px;"><b>Contents</b></div><div
class="panelContent">
<style type="text/css">/*<![CDATA[*/
-div.rbtoc1729242717292 {padding: 0px;}
-div.rbtoc1729242717292 ul {margin-left: 0px;}
-div.rbtoc1729242717292 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1732565521392 {padding: 0px;}
+div.rbtoc1732565521392 ul {margin-left: 0px;}
+div.rbtoc1732565521392 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style><div class="toc-macro rbtoc1729242717292">
+/*]]>*/</style><div class="toc-macro rbtoc1732565521392">
<ul class="toc-indentation"><li>Related Articles</li></ul>
<ul><li><a href="#SessionStorage-SessionStateObjects">Session State Objects</a>
<ul class="toc-indentation"><li><a
href="#SessionStorage-Pitfalls">Pitfalls</a></li><li><a
href="#SessionStorage-CheckforCreation">Check for Creation</a></li><li><a
href="#SessionStorage-PersistenceStrategies">Persistence
Strategies</a></li><li><a href="#SessionStorage-ConfiguringSSOs">Configuring
SSOs</a></li></ul>
Modified: websites/production/tapestry/content/templating-and-markup-faq.html
==============================================================================
--- websites/production/tapestry/content/templating-and-markup-faq.html
(original)
+++ websites/production/tapestry/content/templating-and-markup-faq.html Mon Nov
25 20:12:33 2024
@@ -144,11 +144,11 @@
<!-- /// Content Start -->
<div id="content">
<div id="ConfluenceContent"><h1
id="TemplatingandMarkupFAQ-TemplatingandMarkup">Templating and
Markup</h1><p>Main Article: <a href="component-templates.html">Component
Templates</a></p><h2
id="TemplatingandMarkupFAQ-Contents">Contents</h2><p><style
type="text/css">/*<![CDATA[*/
-div.rbtoc1729242719379 {padding: 0px;}
-div.rbtoc1729242719379 ul {margin-left: 0px;}
-div.rbtoc1729242719379 li {margin-left: 0px;padding-left: 0px;}
+div.rbtoc1732565522490 {padding: 0px;}
+div.rbtoc1732565522490 ul {margin-left: 0px;}
+div.rbtoc1732565522490 li {margin-left: 0px;padding-left: 0px;}
-/*]]>*/</style></p><div class="toc-macro rbtoc1729242719379">
+/*]]>*/</style></p><div class="toc-macro rbtoc1732565522490">
<ul class="toc-indentation"><li><a
href="#TemplatingandMarkupFAQ-WhydoIgetaSAXParseExceptionwhenIuseanHTMLentity,suchas inmytemplate?">Why
do I get a SAXParseException when I use an HTML entity, such as &nbsp; in
my template?</a></li><li><a
href="#TemplatingandMarkupFAQ-Whydosomeimagesinmypageshowupasbrokenlinks?">Why
do some images in my page show up as broken links?</a></li><li><a
href="#TemplatingandMarkupFAQ-What'sthedifferencebetweenidandt:id?">What's the
difference between id and t:id?</a></li><li><a
href="#TemplatingandMarkupFAQ-WhydomyimagesandstylesheetsendupwithaweirdURLslike/assets/meta/zeea17aee26bc0cae/layout/layout.css?">Why
do my images and stylesheets end up with a weird URLs like
/assets/meta/zeea17aee26bc0cae/layout/layout.css?</a></li><li><a
href="#TemplatingandMarkupFAQ-HowdoIaddaCSSclasstoaTapestrycomponent?">How do I
add a CSS class to a Tapestry component?</a></li></ul>
</div><h2
id="TemplatingandMarkupFAQ-WhydoIgetaSAXParseExceptionwhenIuseanHTMLentity,suchas&nbsp;inmytemplate?">Why
do I get a SAXParseException when I use an HTML entity, such as
<code>&nbsp;</code> in my template?</h2><p>Tapestry uses a standard SAX
parser to read your templates. This means that your templates must be <em>well
formed</em>: open and close tags must balance, attribute values must be quoted,
and entities must be declared. The easiest way to accomplish this is to add a
DOCTYPE to your the top of your template:</p><div class="code panel pdl"
style="border-width: 1px;"><div class="codeContent panelContent pdl">
<pre><code class="language-xml"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML
1.0 Strict//EN"