Daniel Fagerstrom pisze:

Just to clarify: I would much have preferred if we only had one expression language (EL) in Cocoon and a property style syntax like the Spring one or JEXL would be fine with me.

But as ELs are used everywhere in Cocoon webapps, most users have a heavy investment in the current set of ELs. So we just cannot deprecate them and require all the users to rewrite all their webapps to the new "better" EL at one go. We need a mechanism that simplify for new users and new webapps by making it easy to use one default EL everywhere at the same time that we don't require users to rewrite their old webapps.

This is the main motivation for the plugable EL architecture.

What about map: language we have discussed earlier? I think it makes sense to 
have such a domain-specific, damn simple language. If it takes
ten minutes to learn such a language and it improves readability, I think it 
makes to have one. Having bunch of general ELs is what I want
to avoid too.

First, from a separation of concern POV, it is IMO much preferable to influence the formating variant, both for output and input, in the form template.

Second, we have the question if it is possible to accomplish ;) Yes, I think it is. Consider a form template, where you have various widgets:

<ft:widget id="startDate">
  <fi:styling type="short"/>
<ft:widget/>

The form infrastructure creates two property paths from the id. One for accessing the start date from the form object to insert in the generated html page. And one property path is used as content of the name attribute in the generated html form element. The name attribute is then used by the browser when posting the filled in value of the form element. In the case of nested widgets, the property path is created from all the ids of the parent widget as well, so we can have property paths like tasks.2.startDate, if the start date is part of a task list, e.g.

So from the above we see that the form template actually create the property path that is used both for getting and setting the property in the form model that the widget is connected to. From this we are not that far away from connecting formatting variant to the property path.

In a state full scenario we are keeping the form object in e.g. a session, so the form template generator could store the associations between property paths and formating variants in the form object as well. These associations are then available to use when parsing the input from the post. And we can make sure that the right variant of the converter is used.

In a stateless scenario, we could instead store the assoications in the form page. We could e.g. add it to the property path in the name attribute: "tasks.2.startDate#short". Then the post parser can use the variant info for choosing the right converter.

That's a really neat idea! I have not thought about it that way and I really 
like it! :-)

So as you can see it is possible to put the choice of formatting variant in the form template so that the two-way aspect is respected.

Getting back to the earth, are you sure that all browsers will be happy with # 
character in field's name?

--
Grzegorz Kossakowski
http://reflectingonthevicissitudes.wordpress.com/

Reply via email to