Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout...
Transcript of Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout...
![Page 1: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/1.jpg)
Tapestry 5
Tapestry 5 – inversion of controll and presentation framework
Jan JiroutCZJUG / 30.5.2010 / Praha
![Page 2: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/2.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Index
Inversion of control Service life cycle
Configuration
Request Response processing
Pages – class, template and properties
Components
UI components
Grid
Bean edit form
Testing
![Page 3: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/3.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Tapestry modules
T5 coreWeb framework
UI components
T5 IoC Background
T5 hibernate Integration
Session in view
![Page 4: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/4.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Application module
Application unit
AppModule java classConfiguration
Object constructing
Configuration contribution
Module loading Automatic META-INF manifest file
Manually
MavenMore than one in jar
![Page 5: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/5.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Inversion of control
@InjectService(“someServiceId”)
@InjectPage(“somePage”)
Application module class
Objects
Lazy references
Unique service id Inject versus InjectService
![Page 6: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/6.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Service life cycle
Lazy loading
Life cycleDefined
Virtual
Realized
Shutdown
Scopes Per-thread
Singleton
![Page 7: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/7.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Service instance creating
Bind In app module class bind method
Build Allows complex initialization / configuration
ConstructorReferenced services are not lazy
Most params rule
![Page 8: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/8.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Service shutdown
Before shutdown code could be executed some code
Code is defined in app module
RegistryShutdownHub
![Page 9: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/9.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Service ID
Unique identification
Valid in all initialized modules
@Local
Proxy – implementation access
Implementation is not accessible
Different ids for same service classGridDataSource
Request filter
Dispatcher
…
![Page 10: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/10.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Hibernate integration
Simplest approach T5 Object coertion
Session and transaction boundaries
![Page 11: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/11.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Configuration of service 1/3
Contribute methodsConfiguration specification
In many modules
Unordered executing
Application module
Class constructor
![Page 12: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/12.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Configuration of service 2/3
Configuration typesUnordered collection
Injected is collection, configured is Configuration Method add(configured object)
Ordered list Allows order Requires configuration id Order by “before” and “after”
Map Previous slide
![Page 13: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/13.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Configuration of service 3/3
Ordered configuration
![Page 14: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/14.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Request/Response
Extends javax.servlet.Filter
Cover *
Basic object types Page
Component
Mixin
Component Template
Class
Messages
![Page 15: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/15.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Project structure – maven 1/2
my-app
|-- pom.xml
`-- src
|-- main
| |-- java
| |-- webapp
| | `-- WEB-INF
| `-- resources
|-- test
| |-- java
| `-- resources
![Page 16: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/16.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Project structure – maven 2/2
|-- java| `-- com| `-- mycompany| `-- app| |-- components| |-- pages| | `-- Index.java| `-- services| `-- AppModule.java|-- resources| `-- com| `-- mycompany| `-- app| |-- components| `-- pages| `-- Index.properties`-- webapp |-- Index.tml `-- WEB-INF `-- web.xml
![Page 17: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/17.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
MasterDispatcherService
Chain of command True when request was processed otherwise false
Ordered configuration
Could be used for Access controller
Redirecting
Content serving
![Page 18: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/18.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
RequestHandle
Generic changes in request / response Set correct page encoding
Adjust page request/response
Closing hibernate
![Page 19: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/19.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Page 1/5 – java class
Ordinary java class Inject, injectService
Per request related data persist
Project structure
Files tml, properties, class Loaded
Attached – to thread
Detached
![Page 20: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/20.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Page 2/5 - properties
Encoding UTF8
Localization of page texts
Extension properties
![Page 21: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/21.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Page 3/5 Binding expressions
Get values into components
Build in bindings Asset - images
Block – id of block
Component – id of component
Context – root relative path
Literal – string value
Message – messages from resources
Prop - property
![Page 22: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/22.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Page 4/5 - template
Encoding UTF8
Localization of page texts,
Extension tml
![Page 23: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/23.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Expressions 5/5
${car.name} → getCar().getName()
Default binding “prop:”
${message:caption}
Output is formatted
<t:outputRaw value=”car.name” />
![Page 24: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/24.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Redirect after post
Prevent multiple submissions
Separate action and rendering
Nice URL
Back button
![Page 25: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/25.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Activation context
onActivate / onPassivate method
Persist page state
Pass parameters between pages
/example/foo.bar:magic/99
![Page 26: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/26.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Component
Similar to page objects Template is in resources
![Page 27: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/27.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Component events
Naming convention
Return values from form submissionNull
String
Class
Page object
Link
Stream
URL
Object
Can throw any exception
Multiple method matches
Event context
![Page 28: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/28.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Events heritage
Page contains component
Event bubble throught component hierachy
Comments componentComments contains event “onSuccess”
Events in not terminated in component
In page could be used “onSuccessFromComments”
![Page 29: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/29.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Grid 1/2
Grid componentGridDataSource
Model
Row
![Page 30: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/30.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Grid 2/2
GridDataSource Support pagination
Get total number of records
Get limited list or records
ModelDefine table structure, columns
![Page 31: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/31.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
BeanEditForm 1/2
Generate bean editing form String
Boolean
Date
Integer
Float
Enumeration
User can contribute
UI is generated
![Page 32: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/32.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
BeanEditForm 2/2
Page context contains entity id
Publish property
Page
![Page 33: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/33.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Edit block contribution
Edit user provided type
Contribute default data type analyzer Allows to identify bean field type
Contribute bean block sourceWhich component handle which data type
Edit componentCould extends already existing “Select”
Could define new
![Page 34: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/34.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Form validation 1/2
Defined Bean annotations
Page template
Event validateForm “success”
“fails
ValidationTracker collect validation problems
Message are from properties file FormId-fieldId-validatorName-message.
Validators Email, max/min (integer value), maxLength, minLength, regexp,
required
![Page 35: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/35.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Form validation 2/2
LoginForm Fields
Annotated
On validateForm event Allows run non standard validation
Can adjust validation tracker from form object
On success event Page navigation
Object persisting
Regexp definition form-email-regexp=^[a-zA-Z0-9._-]+@[a-zA-Z0-9-]+\.[a-zA-Z.]
{2,5}$
![Page 36: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/36.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Field persistence
Page is cleaned
Persist annotation
Storing strategy Session – server HTTP session, default value
Client – URL rewriting
Flash – server HTTP session one usage
Strategy hierarchy
Clustering
Immutable object
![Page 37: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/37.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Testing 1/2
Junit / testNG
String appPackage = "org.example.app";String appName = "LocaleApp";PageTester tester =
new PageTester(appPackage, appName,"src/main/webapp");
Document doc = tester.renderPage("MyPage");AssertEquals(
doc.getElementById("id1").getChildText(), "hello");
Test Submit form
Form validation
Action links
![Page 38: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/38.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Testing 2/2
Service mocking – EasyMock
Pattern usageRecord behavior
Execute page call
Verify service calls
![Page 39: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/39.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Learning curve
![Page 40: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/40.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
40
Tapestry 5 – Why not?
Complexity
Learning curve
Howard Lewis Ship Inconsistent changes
Unsure progress
Community
Job opportunities
![Page 41: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/41.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
41
Resources
http://tapestry.apache.org
http://www.infoq.com/articles/tapestry5-intro
http://tapestryjava.blogspot.com/
http://www.chenillekit.org/
http://wiki.apache.org/tapestry/Tapestry5HowTos
http://www.slideshare.net/mraible/comparing-jsf-spring-mvc-stripes-struts-2-tapestry-and-wicket-presentation
![Page 42: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/42.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
Questions ?
![Page 43: Tapestry 5 - Java · Tapestry 5 – inversion of controll and presentation framework Jan Jirout CZJUG / 30.5.2010 / Praha. T a p e s t r y 5 / c o d e l e s s d e l i v e r Bean edit](https://reader034.fdocuments.in/reader034/viewer/2022042309/5ed7063d62136e72fb7bb0eb/html5/thumbnails/43.jpg)
Tap
est
ry 5
/ c
od
e le
ss
de
liver
mo
re
43
Jan JiroutSenior Architect/SW EngineerTEL Praha (OS) [email protected]
INDRA Czech Republic s.r.o Karolinská 650/1186 00 Praha 8T +420 246 085 700F +420 246 085 701www.indra.es