Hi Confluence's toc macro generates name attribute for anchors, that causes navigation problems in Firefox...
As per this JIRA http://jira.atlassian.com/browse/CONF-8238 it should generate ids instead of name to make it work. Do we have control over this macro ? Cheers Christophe. 2010/10/23 <[email protected]> > General > Questions<https://cwiki.apache.org/confluence/display/TAPESTRY/General+Questions> > Page > *edited* by Howard M. Lewis > Ship<https://cwiki.apache.org/confluence/display/%7Ehlship> > Changes (4) > ... > h3. How do I get started with Tapestry? > > The easiest way to get started is to use [Apache Maven| > http://maven.apache.org] to create your initial project; Maven can use an > _archetype_ (a kind of project template) to create a bare-bones Tapestry > application for you. See the [TAPESTRY:Getting Started] page for more > details. > > One you have Maven installed, execute the command {{mvn archetype:generate > \-DarchetypeCatalog=}}{{[http://tapestry.apache.org]}}. Maven will (after > performing a large number of one-time downloads) ask you questions about how > to create the new project, including a group id (like a package name) and an > artifact id for your new project. > Even without Maven, Tapestry is quite easy to set up. You just need to > [download|TAPESTRY:Download Tapestry] the binaries and setup your build to > place them inside your WAR's WEB-INF/lib folder. The rest is just some > one-time [configuration of the web.xml deployment > descriptor|TAPESTRY:Configuration]. > > {noformat}$ mvn archetype:generate -DarchetypeCatalog= > http://tapestry.apache.org > [INFO] Scanning for projects... > [INFO] Searching repository for plugin with prefix: 'archetype'. > [INFO] > ------------------------------------------------------------------------ > [INFO] Building Maven Default Project > [INFO] task-segment: [archetype:generate] (aggregator-style) > [INFO] > ------------------------------------------------------------------------ > [INFO] Preparing archetype:generate > [INFO] No goals needed for project - skipping > [INFO] [archetype:generate {execution: default-cli}] > [INFO] Generating project in Interactive mode > [INFO] No archetype defined. Using maven-archetype-quickstart > (org.apache.maven.archetypes:maven-archetype-quickstart:1.0) > Choose archetype: > 1: http://tapestry.apache.org -> quickstart (Tapestry 5.2.1-SNAPSHOT > Quickstart Project) > 2: http://tapestry.apache.org -> tapestry-archetype (Tapestry 4.1.6 > Archetype) > Choose a number: : 1 > Choose version: > 1: 5.0.19 > 2: 5.1.0.5 > 3: 5.2.0 > 4: 5.2.1-SNAPSHOT > Choose a number: : 3 > Define value for property 'groupId': : com.example > Define value for property 'artifactId': : newapp > Define value for property 'version': 1.0-SNAPSHOT: > Define value for property 'package': com.example: com.example.newapp > Confirm properties configuration: > groupId: com.example > artifactId: newapp > version: 1.0-SNAPSHOT > package: com.example.newapp > Y: > [INFO] > ------------------------------------------------------------------------ > [INFO] BUILD SUCCESSFUL > [INFO] > ------------------------------------------------------------------------ > [INFO] Total time: 25 seconds > [INFO] Finished at: Tue Aug 17 14:01:50 PDT 2010 > [INFO] Final Memory: 16M/81M > [INFO] > ------------------------------------------------------------------------ > /tmp > $ tree newapp > newapp > |-- pom.xml > `-- src > |-- main > | |-- java > | | `-- com > | | `-- example > | | `-- newapp > | | |-- components > | | | `-- Layout.java > | | |-- pages > | | | |-- About.java > | | | |-- Contact.java > | | | `-- Index.java > | | `-- services > | | `-- AppModule.java > | |-- resources > | | |-- com > | | | `-- example > | | | `-- newapp > | | | |-- components > | | | | `-- Layout.tml > | | | `-- pages > | | | `-- Index.properties > | | `-- log4j.properties > | `-- webapp > | |-- About.tml > | |-- Contact.tml > | |-- Index.tml > | |-- WEB-INF > | | |-- app.properties > | | `-- web.xml > | |-- favicon.ico > | `-- layout > | |-- images > | | |-- img01.jpg > | | |-- img02.jpg > | | |-- img03.jpg > | | |-- img04.jpg > | | |-- img05.gif > | | |-- img06.gif > | | |-- img07.gif > | | |-- img08.gif > | | |-- img09.gif > | | |-- img10.gif > | | |-- img11.gif > | | |-- img12.gif > | | |-- img13.gif > | | |-- img14.gif > | | |-- img15.gif > | | |-- img16.gif > | | |-- img17.gif > | | |-- img18.gif > | | |-- img19.gif > | | |-- img20.gif > | | `-- spacer.gif > | |-- layout.css > | `-- license.txt > |-- site > | |-- apt > | | `-- index.apt > | `-- site.xml > `-- test > |-- conf > | |-- testng.xml > | `-- webdefault.xml > |-- java > | `-- PLACEHOLDER > `-- resources > `-- PLACEHOLDER > > 25 directories, 44 files > /tmp > $ > {noformat} > {warning}The exact content and layout of project generated from the > archetype will change across different releases of Tapestry.{warning} > > > Once it is created, you can load it into any IDE and start coding, or use > {{mvn jetty:run{}}}{footnote}Jetty is a well-known, open-source, > high-performance servlet container. Jetty starts up quickly, and implements > the official Servlet specification very closely.{footnote}. Again, more > one-time downloads, but then you can open your browser to [ > http://localhost:8080] to run the application. > > h3. Why does Tapestry use Prototype? Why not _insert favorite JavaScript > library here_? > > ... > Full Content > General Questions How do I get started with Tapestry? > > The easiest way to get started is to use Apache > Maven<http://maven.apache.org>to create your initial project; Maven can use an > *archetype* (a kind of project template) to create a bare-bones Tapestry > application for you. See the Getting > Started<https://cwiki.apache.org/confluence/display/TAPESTRY/Getting+Started>page > for more details. > > Even without Maven, Tapestry is quite easy to set up. You just need to > download<https://cwiki.apache.org/confluence/display/TAPESTRY/Download+Tapestry>the > binaries and setup your build to place them inside your WAR's > WEB-INF/lib folder. The rest is just some one-time configuration of the > web.xml deployment > descriptor<https://cwiki.apache.org/confluence/display/TAPESTRY/Configuration> > . > Why does Tapestry use Prototype? Why not *insert favorite JavaScript > library here*? > > An important goal for Tapestry is seamless DHTML and Ajax integration. To > serve that goal, it was important that the built in components > be capable of Ajax operations, such as dynamically re-rendering parts of > the page. Because of that, it made sense to bundle a well-known JavaScript > library as part of Tapestry. > > At the time (this would be 2006-ish), Prototype and Scriptaculous were well > known and well documented, and jQuery was just getting started. > > The intent has always been to make this aspect of Tapestry pluggable. This > is work expected in Tapestry 5.3, where a kind of adapter layer will be > introduced so that Tapestry can be easily customized to work with any of the > major JavaScript libraries. > Why does Tapestry have its own Inversion of Control Container? Why not > Spring or Guice? > > An Inversion of Control Container is *the* key piece of Tapestry's > infrastructure. It is absolutely necessary to create software as robust, > performant and extensible as Tapestry. > > Tapestry IoC includes a number of features that distinguish itself from > other containers: > > - Configured in code, not XML > - Built-in extension mechanism for services: configurations and > contributions > - Built-in aspect oriented programming model (service decorations and > advice) > - Easy modularization > - Best-of-breed exception reporting > > Because Tapestry is implemented on top of its IoC container, and because > the container makes it easy to extend or replace any service inside the > container, it is possible to make the small changes to Tapestry needed to > customize it to any project's needs. > How do I upgrade from Tapestry 4 to Tapestry 5? > > There is no existing tool that supports upgrading from Tapestry 4 to > Tapestry 5; Tapestry 5 is a complete rewrite. > > Many of the basic concepts in Tapestry 4 are still present in Tapestry 5, > but refactored, improved, streamlined, and simplified. The basic concept of > pages, templates and components are largely the same. Other aspects, such as > server-side event handling, is markedly different. > Why are there both Request and HttpServletRequest? > > Tapestry's Request interface is *very* close to the standard > HttpServletRequest interface. It differs in a few ways, omitting > some unneeded methods, and adding a couple of new methods (such as isXHR()), > as well as changing how some existing methods > operate. For example, getParameterNames() returns a sorted List of > Strings; HttpServletRequest returns an Enumeration, > which is a very dated approach. > > However, the stronger reason for Request (and the related interfaces > Response and Session) is to enable > the support for Portlets at some point in the future. By writing code in > terms of Tapestry's Request, > and not HttpServletRequest, you can be assured that the same code will > operate in both Servlet Tapestry > and Portlet Tapestry. > ------------------------------ > > Footnotes Reference Notes > Change Notification > Preferences<https://cwiki.apache.org/confluence/users/viewnotifications.action> > View > Online<https://cwiki.apache.org/confluence/display/TAPESTRY/General+Questions>| > View > Changes<https://cwiki.apache.org/confluence/pages/diffpagesbyversion.action?pageId=23334922&revisedVersion=15&originalVersion=14> > -- Regards, Christophe Cordenier. Committer on Apache Tapestry 5 Co-creator of wooki @wookicentral.com
