[jsr-314-open] <h:dataTable> binding vs. ui:repeat
Andy Schwartz
andy.schwartz at oracle.com
Mon Sep 7 21:06:58 EDT 2009
Thanks Lincoln. I haven't had time to debug this, but I have a theory
about what might be happening. In your sample:
> <a:editText value="#{cc.attrs.task.text}"
> rendered="#{!cc.attrs.disabled}">
> *<f:actionListener for="submit"
> action="#{taskController.saveTaskAjax(cc.attrs.story, cc.attrs.task)}"
> /> *
> </a:editText>
We expect "cc" to resolve to the containing composite component (ie. to
the <socialpm:taskBlock> component). I wouldn't be surprised if what is
actually happening is that "cc" is being resolved to the <a:editText>
composite component instead. One reason why I suspect this might be
happening is that I know that Ryan has investigated/resolved similar
problems not too long ago. Another reason why I am suspicious about
this is because we have faced similar issues in our own (ADF Faces)
declarative component solution. This stuff can get tricky. :-)
Hey Ryan -
Does this problem look familiar? Any thoughts on this?
Andy
Lincoln Baxter, III wrote:
> Hey Andy, here you go:
>
> In the mean time I'm going to sign up for the dev lists.
>
> ----------------------------------------------------------------------
> Using:
> <f:actionListener for="submit"
> action="*#{taskController.saveTaskAjax(cc.attrs.story,
> cc.attrs.task)}*" />
>
> *#{taskController.saveTaskAjax(cc.attrs.story, cc.attrs.task)}* =
> null values passed to method
> *#{taskController.saveTaskAjax(currentStoryBean.story, task)}* =
> correct values resolved, assuming currentStoryBean.story and task
> are both in the EL/page scope somewhere.
>
>
> ----------------------------------------------------------------------
> *CC Impl:*
>
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:h="http://java.sun.com/jsf/html"
> xmlns:f="http://java.sun.com/jsf/core"
> xmlns:a="http://java.sun.com/jsf/composite/ajax"
> xmlns:cc="http://java.sun.com/jsf/composite">
> <cc:interface>
> <cc:attribute name="story" required="true" type="Object" />
> <cc:attribute name="task" required="true" type="Object" />
> <cc:attribute name="disabled" required="false" type="Boolean"
> default="false" />
> <cc:insertChildren />
> </cc:interface>
>
> <cc:implementation>
> <h:outputStylesheet name="socialpm/socialpm.css" />
> <h:panelGroup id="taskBlock" layout="block" class="box-bordered p5
> #{cc.attrs.styleClass} taskBlock_#{cc.attrs.task.status}"
> style="#{cc.attrs.style}">
>
> <div class="m5l" style="margin-right: 25px;" >
> <h:outputText value="#{cc.attrs.task.text}"
> rendered="#{cc.attrs.disabled}"/>
> <a:editText value="#{cc.attrs.task.text}"
> rendered="#{!cc.attrs.disabled}">
> *<f:actionListener for="submit"
> action="#{taskController.saveTaskAjax(cc.attrs.story, cc.attrs.task)}"
> /> *
> </a:editText>
> </div>
> </cc:implementation>
> </html>
>
>
> ----------------------------------------------------------------------
> *consuming page code:* <-- this is where task is defined in the
> UI:Repeat, so it is in scope
>
> <!DOCTYPE html
> PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:c="http://java.sun.com/jsp/jstl/core"
> xmlns:f="http://java.sun.com/jsf/core"
> xmlns:h="http://java.sun.com/jsf/html"
> xmlns:socialpm="http://java.sun.com/jsf/composite/socialpm"
> xmlns:pretty="http://ocpsoft.com/prettyfaces"
> xmlns:ui="http://java.sun.com/jsf/facelets" xml:lang="en" lang="en">
>
> <ui:composition>
> <h:form id="tasksForm">
> <c:if test="#{empty currentStoryBean.story.tasks}">
> <div class="m5">This story has no tasks. That could be a problem
> later...</div>
> </c:if>
>
> <ui:repeat value="#{currentStoryBean.story.tasks}" var="task">
> <socialpm:taskBlock task="#{task}" story="#{currentStoryBean.story}"
> members="#{currentProjectBean.project.activeMembers}"
> disabled="#{!authorizationBean.isMember or !currentStoryBean.story.open}"
> deletable="true" styleClass="m5t" refreshOnSave="false" />
> </ui:repeat>
> </h:form>
> </ui:composition>
> </html>
>
>
>
>
> On Sat, 2009-09-05 at 15:23 -0400, Andy Schwartz wrote:
>> Hey Lincoln -
>>
>> Lincoln Baxter, III wrote:
>> > First, please let me know if there is a better place to ask JSF Dev
>> > related questions.
>> >
>>
>> I suppose the Mojarra dev list might be the right place for
>> implementation questions:
>>
>> https://javaserverfaces.dev.java.net/mailinglists.html
>>
>> Though personally I am fine with you asking here. :-)
>>
>> Could you send along your composite component implementation (and
>> perhaps a snippet from the consuming page)? Just want to make sure I
>> understand the use case.
>>
>> Andy
>>
>>
>>
> --
> *Lincoln Baxter, III*
> Co-Founder of OcpSoft <http://ocpsoft.com>
> Author of PrettyFaces <http://ocpsoft.com/prettyfaces> URL Rewriting
> for JSF
>
>
More information about the jsr-314-open-mirror
mailing list