Dear vaadin community members:
As GWT newbie I was led to your excellent (!) and great-looking
vaadin
framework which I’m currently evaluating for a specific app requirement. As I’m still not sure if vaadin would be appropriate for solving my problem, I’d really need some advice from more experienced vaadin users/developers.
Suppose a
Simple Online App/Form Builder
with basically 2 modules:
- ‘Admins’ have secured access to an ‘AdminConsole’ where they dynamically
compose/edit
online apps (GWT-style or mimicking traditional web pages) on the client side,
preview
them there, and finally
publish
the result on the web server under an
app-specific url
– “{base-url}/{app-name}”.
- ‘EndUsers’ visit a published app via its URL and navigate back and forth, possibly submitting some forms – public ones if ‘unauthenticated’, ordering or posting forms if authenticated.
Admins usually describe entities falling into 3 usual layers:
persistent custom types
: e.g.
“I’ve an entity type called ‘Product’ having attributes a,b of types c,d and relationships e,f to …”
CRUD ui for each entity
: e.g.
“The ‘edit’ form for a ‘Product’ is composed of widget1…widget2…”
controller behavior logic
:
[list=1]
ui-to-bean data binding
: e.g.
“‘product01’ is backing bean for ‘editProductForm’”
.
!!!declarative behavior specification for
:
[list]
client-side
:
[list]
“When user clicks ‘button_a’, show/hide ‘panel_b’ in super panel region ‘top_right’”
.
“When user activates ‘checkbox_c’, collapse form section ‘sect_02’ and show 'sect_03”
.
dyn. form field validation rules with corresponding error reporting
.- …
[/list]
server-side
:
[list]
“When user submits form, 1st check validity server-side AND if all is O.K. store the backing bean values in the backend db, else …”
.
“When user sebmits form AND value of field ‘xyz’ is provided, then send an email to …”
.- …
- [/list]
[/list]
[/list]
(critical issues colored in red)
Obviously a rules-based approach for the client-side controllers would be a good choice, right? – Not knowing if it is easily realizable with
vaadin
.
As far as I saw, in
vaadin
the hierarchical composition of
ui components
comparable to my required ‘AppWindow’ (with publication url), ‘Panel’ associated to ‘Layout/Template’ and ‘Theme’, as well as built-in and custom ui widgets, especially ‘Forms’, DON’T pose any problems, right???
…
But what’s with the dynamic specification & instantiation of form/widget bahavior???
E.g.,
How would I describe a 4-widgets form with ‘checkBox_01’ (unchecked), ‘textField_01’, ‘optionGroup_3opts’ and ‘listSelect_5items’ (invisible) that exposes the following on-client behavior???
- “IF user activates ‘checkBox_01’ THEN ‘textField_01’ shows text
CheckBox Pressed!
AND ‘optionGroup_3opts’ selects its middle option automatically”. - “Whenever middle option of ‘optionGroup_3opts’ gets selected AND ‘checkBox_01’ is checked => let the text in ‘textField_01’ be
Yeah, 2nd cycle processed!
AND make ‘listSelect_5times’ visible after loading its 5 items from the remote server”.
- Which architecture components would be in place for realizing this dyn.-behavior scenario??? (most important question)
Further questions are:
- How would I “publish” a main app screen under a specific url on the web server?
- Is vaadin appropriate for mimicking traditional web apps, i.e. page-based ones with SEO-friendly links?
– On the “Add-ons” page I saw one intent to achieve this… But do you already have experiences if it’s practical for production? - How could I best implement the AdminConsole exposing an edit and preview mode (keeping in mind that the preview code would be the one presented to enduser (code reuse))??
I really would need your help in clarifying these topics for a decision … and hopefully in the end no missing feature impedes me to become a new
vaadin
user
Thank you very much for your help in advance.
Best regards,
Alessandro