ER's for Facelet Support, or "why facelets is a 2nd class citizen in JDev"
Hello all,
After an [url http://forums.oracle.com/forums/thread.jspa?threadID=873997]interesting journey getting Facelets, Trinidad, and JDeveloper 11g to play nicely together, I thought I'd post some thoughts on the sort of things that (IMHO) JDeveloper 11 needs in order to offer real, true Facelets support. I'll offer my list below, which will include observations as well as suggestions:
1). If we are going to use true .xhtml files, JDeveloper 11g doesn't support drag-and-drop from the data control pallette on to the .xhtml page (I do have a workaround that I'll detail below, but that has its own issues).
2). It's literally impossible to mix JSP and Facelets in a single project. As soon as you configure your project for JSP (by adding taglibs, for instance), you can no longer create a Facelets page from the "New" gallery, as JDeveloper will tell you "Cannot add a facelets page to a project configured for JSP." It works both ways, too - if you add a Facelets file to your project, no longer can you create a JSP.
3). Even if I manually try to get data bindings (page definitions) working with .xhtml files, it doesn't seem to work (I did this by creating a jspx file and page definition and copying files / changing the data binding registry).
4). Because ADF Faces is so intertwined with Trinidad, it would be nice if faces-config.xml and web.xml would be properly configured automatically (as an option) for Trinidad. If I manually configure faces-config.xml by ensuring the view handler is not defined there, define an alternate view handler in web.xml, and then add a new Facelets page to my project, JDeveloper undoes all my work and puts the view handler back in faces-config.xml, causing major problems.
5). To work-around the poor support for drag-and-drop from data controls onto .xhtml files, I have just decided to use .jspx as my default suffix for Facelets files. I create them via picking "JSF Page" from the new gallery, and then I manually mess around with the source so that it's not really a JSPX anymore. However, if I do this, I don't have any tag completion support for the Facelets tags. If I download the TLD from [url https://facelets.dev.java.net/servlets/ProjectDocumentList?folderID=4190&expandFolder=4190&folderID=0]here, JDeveloper complains about not having a tag handler class.
6). Two words: WYSIWYG Editing. There isn't any for Facelets pages. I have ADF Template envy. As soon as you configure web.xml and faces-config.xml for Facelets, all WYSIWYG is broken. Now, I know "real" coders don't use WYSIWYG, but it's sure darn nice to switch from source view and take a quick peek at the layout. For new-to-JSF/new-to-Trinidad/new-to-ADF Faces developers, it's almost a hard-and-fast necessity.
7). Would be nice to have page definition inheritance working like for ADF Templates too.
8). Drag-and-dropped things from the data control tend to include f:validator tags. No problems there, but the tags don't include an validatorId. Facelets needs them. I work around this manually by adding validatorId="" to each of the tags. I know there is a velocity template somewhere that JDeveloper uses for this drag-and-drop, but I cannot find them - does anyone know where they are?
9). If, in a project with no ADF Faces - only Trinidad, if I drag-and-drop from the data control on to an ui:define tag in the structure window, I get all kinds of ADF Faces options for the drop, nothing for trinidad.
10). Facelets < 1.1.15 has a tiny bug with the ui:debug tag (you cannot expand the component tree). It would be nice to update the one included with JDev (1.1.12) - I have done this and it appears to work fine.
From a productivity point of view - #6, together with drag-and-drop support on to true .xhtml files (not .xhtml files with a .jspx extension) would elevate the game leaps-and-bounds.
I'm interested in any of the following:
a). Some wonderful news from Oracle that they already know all of these limitations and they are fixed in a patch release which was just uploaded to OTN 5 minutes ago ;)
b). Insight on better ways of working with ADF BC / ADF Bindings / Trinidad / Facelets in JDeveloper 11
c). Feedback and experiences from other people using Facelets in JDeveloper, particularly with ADF Data Binding.
Depending upon the level of interest, perhaps we can migrate the discussion over to the [url http://groups.google.com/group/adf-methodology]ADF Enterprise Methodology group and produce a Wiki page out of it.
Best regards,
John