svn commit: r946273 - in /websites/production/tapestry/content: cache/main.pageCache templating-and-markup-faq.html
Author: buildbot Date: Sat Apr 4 03:20:42 2015 New Revision: 946273 Log: Production update by buildbot for tapestry Modified: websites/production/tapestry/content/cache/main.pageCache websites/production/tapestry/content/templating-and-markup-faq.html Modified: websites/production/tapestry/content/cache/main.pageCache == Binary files - no diff available. 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 Sat Apr 4 03:20:42 2015 @@ -107,7 +107,7 @@ table.ScrollbarTable td.ScrollbarNextIco The other id is the client id, a unique id for the rendered element within the client-side DOM. JavaScript that needs to access the element uses this id. For example: -In many components, the id attribute is an informal parameter; a value from the template that is blindly echoed into the output document. In other cases, the component itself has an id attribute. Often, in the latter case, the Tapestry component id is the default value for the client id.Why do my images and stylesheets end up with a weird URLs like /assets/meta/zeea17aee26bc0cae/layout/layout.css?Tapestry doesn't rely on the servlet container to serve up your static assets (images, stylesheets, flash movies, etc.). Instead, Tapestry processes the requests itself, streaming assets to the browser.Asset content will be GZIP compressed (if the client supports compression, and the content is compressible). In addition, Tapestry will set a far-future expires header on the conten t. This means that the browser will not ask for the file again, greatly reducing network traffic.The weird hex string is a fingerprint; it is a hash code computed from the actual content of the asset. If the asset every changes, it will have a new fingerprint, and so will be a new path and a new (immutable) resource. This approach, combined with a far-future expires header also provided by Tapestry, ensures that clients aggressively cache assets as they navigate your site, or even between visits.How do I add a CSS class to a Tapestry component?As they say, "just do it". The majority of Tapestry components support informal parameters, meaning that any extra attributes in the element (in the template) will be rendered out as additional attributes. So, you can apply a CSS class or style quite easily: +In many components, the id attribute is an informal parameter; a value from the template that is blindly echoed into the output document. In other cases, the component itself has an id attribute. Often, in the latter case, the Tapestry component id is the default value for the client id.Why do my images and stylesheets end up with a weird URLs like /assets/meta/zeea17aee26bc0cae/layout/layout.css?Tapestry doesn't rely on the servlet container to serve up your static assets (images, stylesheets, flash movies, etc.). Instead, Tapestry processes the requests itself, streaming assets to the browser.Asset content will be GZIP compressed (if the client supports compression, and the content is compressible). In addition, Tapestry will set a far-future expires header on the conten t. This means that the browser will not ask for the file again, greatly reducing network traffic.The weird hex string is a fingerprint; it is a hash code computed from the actual content of the asset. If the asset ever changes, it will have a new fingerprint, and so will be a new path and a new (immutable) resource. This approach, combined with a far-future expires header also provided by Tapestry, ensures that clients aggressively cache assets as they navigate your site, or even between visits.How do I add a CSS class to a Tapestry component?As they say, "just do it". The majority of Tapestry components support informal parameters, meaning that any extra attributes in the element (in the template) will be rendered out as additional attributes. So, you can apply a CSS class or style quite easily: You can even use template expansions inside the attribute value:
svn commit: r946270 - in /websites/production/tapestry/content: cache/main.pageCache configuration.html using-beaneditform-to-create-user-forms.html
Author: buildbot Date: Sat Apr 4 02:19:35 2015 New Revision: 946270 Log: Production update by buildbot for tapestry Modified: websites/production/tapestry/content/cache/main.pageCache websites/production/tapestry/content/configuration.html websites/production/tapestry/content/using-beaneditform-to-create-user-forms.html Modified: websites/production/tapestry/content/cache/main.pageCache == Binary files - no diff available. Modified: websites/production/tapestry/content/configuration.html == --- websites/production/tapestry/content/configuration.html (original) +++ websites/production/tapestry/content/configuration.html Sat Apr 4 02:19:35 2015 @@ -125,11 +125,11 @@ Configuring TapestryThis page discusses all the ways in which Tapestry can be configured. Tapestry applications are configured almost entirely using Java, with very little XML at all.Contents/**/ +/*]]>*/ XML configuration (web.xml)Your Application's Module ClassConfiguration Symbol NamesSetting Component Parameter DefaultsConfiguring Ignored PathsConfiguring Content Type MappingSetting Execution Modes XML configuration (web.xml)Tapestry runs on top of the standard Java Servlet API. To the servlet container, such as Tomcat, Tapestry appears as a servlet filter. This gives Tapestry great flexibility in matching URLs without requiring lots of XML configuration.Although most configuration is done with Java, a small but necessary amount of configuration occurs inside the servlet deployment descriptor, WEB-INF/web.xml. Most of the configuration is boilerplate, nearly the same for all applications.web.xml (partial) -3. Add the parameter to the Surfire plugin for your test:pom.xml +3. Add the parameter to the Surefire plugin for your test:pom.xml -For each mode declared in your JVM System Property, TapestryFilter checks for a parameter in your web.xml, named tapestry.TheModeName-modules, with TheModeName being the name of the desired mode. Its value will be a comma-separated list of modules.If the tapestry.execution-mode is not declared, Tapestry will automatically look for the tapestry.production-modules parameter, because “production” is the default tapestry.execution-mode value.The example below defines two differents execution modes in your web.xml file: production (the default value) and DevelopmentMode. For each mode, we list the modules we want to load. If we use JVM System property declared in the example above, the UatModeModule module will be loaded.web.xml +For each mode declared in your JVM System Property, TapestryFilter checks for a parameter in your web.xml, named tapestry.TheModeName-modules, with TheModeName being the name of the desired mode. Its value will be a comma-separated list of modules.If the tapestry.execution-mode is not declared, Tapestry will automatically look for the tapestry.production-modules parameter, because “production” is the default tapestry.execution-mode value.The example below defines two different execution modes in your web.xml file: production (the default value) and uat (for "user acceptance testing"). For each mode, we list the modules we want to load. If we use JVM System property declared in the example above, the UatModeModule module will be loaded.web.xml
svn commit: r946258 - in /websites/production/tapestry/content: cache/main.pageCache javascript-rewrite-in-54.html
Author: buildbot Date: Fri Apr 3 23:19:51 2015 New Revision: 946258 Log: Production update by buildbot for tapestry Added: websites/production/tapestry/content/javascript-rewrite-in-54.html Modified: websites/production/tapestry/content/cache/main.pageCache Modified: websites/production/tapestry/content/cache/main.pageCache == Binary files - no diff available. Added: websites/production/tapestry/content/javascript-rewrite-in-54.html == --- websites/production/tapestry/content/javascript-rewrite-in-54.html (added) +++ websites/production/tapestry/content/javascript-rewrite-in-54.html Fri Apr 3 23:19:51 2015 @@ -0,0 +1,97 @@ + + + + + + + + + +JavaScript Rewrite in 5.4 -- Apache Tapestry + + + + + + + + + + + +HomeGetting StartedDocumentationDownloadAboutCommunityhttp://www.apache.org/";>Apachehttp://www.apache.org/foundation/sponsorship.html";>Sponsorshiphttp://www.apache.org/foundation/thanks.html";>Thanks + + + +Tapestry docs, issues, wikis & blogs: +http://tapestry.apache.org/search.html";> + + + + +http://tapestry.apache.org/images/tapestry_small.png"; data-image-src="http://tapestry.apache.org/images/tapestry_small.png";>JavaScript Rewrite in 5.4 + + + + + + +Apache Tapestry > Documentation > JavaScript Rewrite in 5.4 +https://cwiki.apache.org/confluence/pages/editpage.action?pageId=27848776";>edit + + + +/**/ +Tapestry and JavaScriptTapestry JavaScript Limitations (through 5.3) +Dependence on Prototype/ScriptaculousLack of DocumentationLack of Module StructureComplex Initialization +JavaScript Improvements for 5.4 +RequireJSSlow Page Load and InitializationMapping Modules to AssetsExtensions to JavaScriptSupportAvoiding JavaScript ClassesExpose Global Message Catalog to ClientPartial Page Update Response +Maintaining Backwards CompatibilityTwitter BootstrapContent Delivery Network IntegrationExtJS CompatibilityMore Thoughts +Tapestry and JavaScriptTapestry 5 has had a interesting mix of characteristics.On the one hand, it has had a large number of features that work, and work well, right out of the box, with no special configuration or setup. This includes client-side validation, dynamic content updates, simple animations, progressive enhancement, and other standard Ajax and DHTML use cases.In addition, Tapestry has evolved, from Tapestry 5.0 through 5.3, into a quite capable provisioning framework:JavaScript libraries may be combined into stacks that are combined (in production) into a single virtual fileJavaScript libraries and CSS files may be minifiedLibraries, stacks, and other resources are exposed to the browser with a versioned URL and far-future expires header, to support aggressive client-cachingResources, including JavaScript and CSS, can be distributed in side JARs (as part of reusable component libraries)Compressible resources will be automatically GZip compressed if the client supports itHowever, JavaScript support in Tapestry is still unsatisfactory. Too often, Tapestry falls into an http://en.wikipedia.org/wiki/Uncanny_valley"; >uncanny valley where the framework (server-side and client-side) does so much automatically that it becomes accepted that it does everything ... developers later discover, to their dismay, that the last 10% of custom behavior they desire is very hard to implement, because of all the common problems that plague any complex system: insufficient APIs, unexpected leaky abstractions, or just plain bugs.Common examples of the challenges imposed by Tapestry include implementing a Confirm mixin, customizing behavior when a Zone component is dynamically updated, or any number of issues related to Forms, form elements, and Ajax updates. This document is a roadmap for how Tapestry 5.4 will revisit the relationship between server-side Java and client-side JavaScript. Ultimately, we hope to convert this relationship from an obstacle to using Tapestry into an essential reason to select Tapestry in the first place.Tapestry JavaScript Limitations (through 5.3)Dependence on Prototype/ScriptaculousTapestry made an early choice to embrace Prototype and Scriptaculous at a time when this made sense, circa 2006-2007.The goal was to have Tapestry provide a client-side API, the Tapestry namespace, that in turn would delegate complex behaviors (including DOM element selection, event management, and XmlHttpRequest processing) to a foundational framework. The goal was to isolate all the direct dependencies on Prototype in such a way that it wou ld be possible, in the future, to swap out for a different foundational framework,
svn commit: r946241 [1/2] - in /websites/production/tapestry/content: ./ cache/ error-page-recipe.data/ overriding-exception-reporting.data/
Author: buildbot Date: Fri Apr 3 22:19:42 2015 New Revision: 946241 Log: Production update by buildbot for tapestry Added: websites/production/tapestry/content/error-page-recipe.data/Resource_not_found_.png (with props) websites/production/tapestry/content/overriding-exception-reporting.data/Application_Exception.png (with props) websites/production/tapestry/content/overriding-exception-reporting.data/actionfail_-_top.png (with props) websites/production/tapestry/content/overriding-exception-reporting.data/customer_exception_report_-_open_1.png (with props) websites/production/tapestry/content/overriding-exception-reporting.data/index_as_excepton_report.png (with props) Modified: websites/production/tapestry/content/cache/main.pageCache websites/production/tapestry/content/component-libraries.html websites/production/tapestry/content/error-page-recipe.html websites/production/tapestry/content/forms-and-form-components-faq.html websites/production/tapestry/content/general-questions.html websites/production/tapestry/content/overriding-exception-reporting.html websites/production/tapestry/content/security-faq.html websites/production/tapestry/content/templating-and-markup-faq.html Modified: websites/production/tapestry/content/cache/main.pageCache == Binary files - no diff available. Modified: websites/production/tapestry/content/component-libraries.html == --- websites/production/tapestry/content/component-libraries.html (original) +++ websites/production/tapestry/content/component-libraries.html Fri Apr 3 22:19:42 2015 @@ -75,7 +75,13 @@ table.ScrollbarTable td.ScrollbarParent table.ScrollbarTable td.ScrollbarNextName {text-align: right;border: none;} table.ScrollbarTable td.ScrollbarNextIcon {text-align: center;width: 16px;border: none;} -/*]]>*/https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" height="16">Supporting Informal Parameters https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" height="8">Cookbook Switching Caseshttps://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" height="16">Creating Component LibrariesNearly every Tapestry application includes a least a couple of custom components, specific to the application. What's exciting about Tapestry is how easy it is to package components for reuse across many applications ... and the fact that applications using a component library need no special configuration.A Tapestry component library consists of components (and optionally mixins, pages and component base classes). In addition, a component library will have a module that can define new services (needed by the components) or configure other services present in Tapestry. Finally, components can be packaged with assets: resources such as images, stylesheets and JavaScript libraries that need to be provided to the client web browser.We're going to create a somewhat insipid component that displays a large happy face icon.Tapestry doesn't mandate that you use any build system, but we'll assume for the moment that you are using Maven 2. In that case, you'll have a pom.xml file something like the following:pom.xml +/*]]>*/https://cwiki.apache.org/confluence/images/icons/back_16.gif"; width="16" height="16">Supporting Informal Parameters https://cwiki.apache.org/confluence/images/icons/up_16.gif"; width="8" height="8">Cookbook Switching Caseshttps://cwiki.apache.org/confluence/images/icons/forwd_16.gif"; width="16" height="16"> +Icon + +This page has not yet been fully updated for Tapestry 5.4. Things are different and simpler in 5.4 than in previous releases. + + +Creating Component LibrariesNearly every Tapestry application includes a least a couple of custom components, specific to the application. What's exciting about Tapestry is how easy it is to package components for reuse across many applications ... and the fact that applications using a component library need no special configuration.A Tapestry component library consists of components (and optionally mixins, pages and component base classes). In addition, a component library will have a module that can define new services (needed by the components) or configure other services present in Tapestry. Finally, components can be packaged with assets: resources such as images, stylesheets and JavaScript libraries that need to be provided to the client web browser.We're going to create a somewhat insipid component that displays a large happy face icon.Tapestry doesn't mandate that you use any build system, but we'll assume for the moment that you are using Maven 2. In that case, you'll have a pom.xml file something like
svn commit: r946241 [2/2] - in /websites/production/tapestry/content: ./ cache/ error-page-recipe.data/ overriding-exception-reporting.data/
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 Fri Apr 3 22:19:42 2015 @@ -82,7 +82,7 @@ table.ScrollbarTable td.ScrollbarNextIco Part of the DOCTYPE is the declaration of entities such as .Alternately, you can simply use the numeric version: This is the exact same character and will render identically in the browser.Starting in release 5.3, Tapestry introduces an XHTML doctype when no doctype is present; this means that common HTML entities will work correctly.Why do some images in my page show up as broken links?You have to be careful when using relative URLs inside page templates; the base URL may not always be what you expect. For example, inside your ViewUser.tml file, you may have: -This makes sense; ViewUser.tml is in the web context, as is the icons folder. The default URL for this page will be /viewuser (assuming that ViewUser class is in the _root-package_.{{pages}} package).However, the ViewUser page might use a page activation context to identify which user is to be displayed: +This makes sense; ViewUser.tml is in the web context, as is the icons folder. The default URL for this page will be /viewuser (assuming that ViewUser class is in the root-package.pages package).However, the ViewUser page might use a page activation context to identify which user is to be displayed: