Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagexml
titlesrc/main/resources/com/example/tutorial/pages/address/CreateAddress.tml
<html t:type="layout" title="Create New Address"
    xmlns:t="http://tapestry.apache.org/schema/tapestry_5_34.xsd">

    <em>coming soon ...</em>

</html>

...

So ... why is the class named "CreateAddress" and not simply "Create"? Actually, we could have named it "Create", and the application would still work, but the longer class name is equally valid. Tapestry noticed the redundancy in the class name (com.example.tutorial.pages.address.CreateAddress) and just stripped out the redundant suffix. Tapestry also checks for redundant prefixes. In addition, the long name, "address/CreateAddress" would also work.Eventually, your application will probably have more entities: perhaps you'll have a "user/Create" page and a "payment/Create" page and an "account/Create" page. You could have a bunch of different classes all named Create spread across a number of different packages. That's legal Java, but it isn't ideal. You may find yourself accidentally editing the Java code for creating an Account when your really want to be editing the code for creating a

Tapestry actually creates a bunch of aliases for you pages; any of these aliases are valid and can appear in URLs or in the page parameter of PageLink.  You can see the list in the console:

Code Block
[INFO] TapestryModule.ComponentClassResolver Available pages (12):
              (blank): com.example.tutorial.pages.Index
   ComponentLibraries: org.apache.tapestry5.corelib.pages.ComponentLibraries
             Error404: com.example.tutorial.pages.Error404
      ExceptionReport: org.apache.tapestry5.corelib.pages.ExceptionReport
             GameOver: com.example.tutorial.pages.GameOver
                Guess: com.example.tutorial.pages.Guess
                Index: com.example.tutorial.pages.Index
          PageCatalog: org.apache.tapestry5.corelib.pages.PageCatalog
PropertyDisplayBlocks: org.apache.tapestry5.corelib.pages.PropertyDisplayBlocks
   PropertyEditBlocks: org.apache.tapestry5.corelib.pages.PropertyEditBlocks
        ServiceStatus: org.apache.tapestry5.corelib.pages.ServiceStatus
          T5Dashboard: org.apache.tapestry5.corelib.pages.T5Dashboard
       address/Create: com.example.tutorial.pages.address.CreateAddress
address/CreateAddress: com.example.tutorial.pages.address.CreateAddress

Tapestry users the shortest alias when constructing URLs.

Eventually, your application will probably have more entities: perhaps you'll have a "user/Create" page and a "payment/Create" page and an "account/Create" page. You could have a bunch of different classes all named Create spread across a number of different packages. That's legal Java, but it isn't ideal. You may find yourself accidentally editing the Java code for creating an Account when your really want to be editing the code for creating a Payment.

Tapestry is encouraging you to use a more descriptive name: CreateAddress, not just Create, but it isn't making you pay the cost (in terms of longer, uglier URLs). The URL to access the page will still be http://localhost:8080/tutorial1/address/create.

...