Skip to main content

Question about Jim Driscoll's Ajax EditText Component Example

13 replies [Last post]
lincolnbaxter
Offline
Joined: 2008-03-26
Points: 0

http://weblogs.java.net/blog/driscoll/archive/2008/11/another_jsf_20_1.html

When following this demo, everything works fine until I try to add an actionListener or valueChangeListener to attempt to trigger an action that will actually save the new value. Has anyone had any luck with this? I'd like to pass this listener as an attribute if possible, but again, so far no luck.

I'm trying this:

Thanks!
-Lincoln

Reply viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
Lincoln Baxter, III

I still get the NPE without the actionSource. I'll try to see if I can
step debug more thoroughly. Last time it wouldn't let me step in to the
execute() method.

Caused by: java.lang.NullPointerException
at java.io.Writer.write(Writer.java:140)
at
com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:193)
at
com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:116)
at
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)

On Sun, 2009-02-08 at 10:06 -0800, Jim Driscoll wrote:

> Well, I don't think we have a test that combines composite:actionSource
> with composite:attribute method-signature, so you may have found a new
> bug. If you remove the actionSource def, does it still fail?
>
> Jim
>
> On 2/8/09 9:30 AM, Lincoln Baxter, III wrote:
> > Good call.
> >
> > My first thought is that I should probably get a more descriptive
> > exception, even if I'm using it wrong.
> > However, I get the same result :( This is what I did... irrelevant parts
> > excluded.
> >
> > *Bean:*
> >
> > public void nameListener(final ActionEvent event)
> > {
> > System.out.println("Listened");
> > }
> >
> >
> > *Consumer:*
> >
> > > > submitListener="#{viewProjectBean.nameListener}" />
> >
> > *Component:*
> >
> > > > displayName="Editable Text Component"
> > shortDescription="Editable Text Component">
> > > > required="true"
> > method-signature="void f1(javax.faces.event.ActionEvent)" />
> >
> >
> >

> >
> >
> > .....
> > > > actionListener="#{compositeComponent.attrs.submitListener}"
> > onclick="return submitButton('#{compositeComponent.clientId}',
> > event);">
> >

> > > > onclick="return cancelButton('#{compositeComponent.clientId}');" />
> > ....
> >

> >
> >
> >
> >
> >
> > On Sun, 2009-02-08 at 08:56 -0800, Jim Driscoll wrote:
> >>
> >> To see how to call a listener in a component, see here:
> >>
> >> http://weblogs.java.net/blog/driscoll/archive/2008/12/jsf_20_wiring_u_1....
> >
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
> For additional commands, e-mail: webtier-help@glassfish.dev.java.net
>
[att1.html]

Jim Driscoll

All -

Ryan's been looking at this one, but I should let you know that the NPE
will happen if you have a "target" attribute that points to an id that
doesn't exist in the composite component.

So - to recap:

To use a method expression, you need to say:

method-signature="String f1(void)" />

where name is the attribute name on the containing tag, targets is the
list of IDs that the method will be acting against in the component
text, and method-signature is the anonymous signature of the method that
will be accepted.

If you instead have targets point to a non-existent id, you'll get an
NPE. That NPE was just fixed by Ryan, see bug #988.

Jim

On 2/8/09 10:00 PM, Lincoln Baxter, III wrote:
> I still get the NPE without the actionSource. I'll try to see if I can
> step debug more thoroughly. Last time it wouldn't let me step in to the
> execute() method.
>
>
> Caused by: java.lang.NullPointerException
> at java.io.Writer.write(Writer.java:140)
> at
> com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:193)
> at
> com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:120)
> at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:116)
> at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
>
>
>
> On Sun, 2009-02-08 at 10:06 -0800, Jim Driscoll wrote:
>> Well, I don't think we have a test that combines composite:actionSource
>> with composite:attribute method-signature, so you may have found a new
>> bug. If you remove the actionSource def, does it still fail?
>>
>> Jim
>>
>> On 2/8/09 9:30 AM, Lincoln Baxter, III wrote:
>> > Good call.
>> >
>> > My first thought is that I should probably get a more descriptive
>> > exception, even if I'm using it wrong.
>> > However, I get the same result :( This is what I did... irrelevant parts
>> > excluded.
>> >
>> > *Bean:*
>> >
>> > public void nameListener(final ActionEvent event)
>> > {
>> > System.out.println("Listened");
>> > }
>> >
>> >
>> > *Consumer:*
>> >
>> > >> > submitListener="#{viewProjectBean.nameListener}" />
>> >
>> > *Component:*
>> >
>> > >> > displayName="Editable Text Component"
>> > shortDescription="Editable Text Component">
>> > >> > required="true"
>> > method-signature="void f1(javax.faces.event.ActionEvent)" />
>> >
>> >
>> >

>> >
>> >
>> > .....
>> > >> > actionListener="#{compositeComponent.attrs.submitListener}"
>> > onclick="return submitButton('#{compositeComponent.clientId}',
>> > event);">
>> >

>> > >> > onclick="return cancelButton('#{compositeComponent.clientId}');" />
>> > ....
>> >

>> >
>> >
>> >
>> >
>> >
>> > On Sun, 2009-02-08 at 08:56 -0800, Jim Driscoll wrote:
>> >>
>> >> To see how to call a listener in a component, see here:
>> >>
>> >> http://weblogs.java.net/blog/driscoll/archive/2008/12/jsf_20_wiring_u_1....
>> >
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:webtier-unsubscribe@glassfish.dev.java.net
>> For additional commands, e-mail:webtier-help@glassfish.dev.java.net
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
For additional commands, e-mail: webtier-help@glassfish.dev.java.net

Lincoln Baxter, III

On Sat, 2009-02-07 at 20:58 -0800, Jim Driscoll wrote:

> what's the submitButton call doing on
> the same tag as the f:ajax tag?

Just found something interesting. I believe that the ActionListener is
somehow not being passed through to the editText tag, because when I try
to use the tag without the action listener (when it expects it) I get
the same behavior as when I pass one in. (NullPointer, etc)

--Lincoln
[att1.html]

Jim Driscoll

That makes sense - you haven't told the component that it's supposed to
be expecting a method. The fact that you were calling jsf.ajax.request
twice confused me, and distracted me from that.

To see how to call a listener in a component, see here:

http://weblogs.java.net/blog/driscoll/archive/2008/12/jsf_20_wiring_u_1....

On 2/8/09 7:41 AM, Lincoln Baxter, III wrote:
> On Sat, 2009-02-07 at 20:58 -0800, Jim Driscoll wrote:
>> what's the submitButton call doing on
>> the same tag as the f:ajax tag?
>
> Just found something interesting. I believe that the ActionListener is
> somehow not being passed through to the editText tag, because when I try
> to use the tag without the action listener (when it expects it) I get
> the same behavior as when I pass one in. (NullPointer, etc)
>
> --Lincoln

---------------------------------------------------------------------
To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
For additional commands, e-mail: webtier-help@glassfish.dev.java.net

Lincoln Baxter, III

Good call.

My first thought is that I should probably get a more descriptive
exception, even if I'm using it wrong.
However, I get the same result :( This is what I did... irrelevant parts
excluded.

Bean:

public void nameListener(final ActionEvent event)
{
System.out.println("Listened");
}

Consumer:

submitListener="#{viewProjectBean.nameListener}" />

Component:

displayName="Editable Text Component"
shortDescription="Editable Text Component">
targets="submit"
required="true"
method-signature="void
f1(javax.faces.event.ActionEvent)" />
type="String" />


.....

actionListener="#{compositeComponent.attrs.submitListener}"
onclick="return
submitButton('#{compositeComponent.clientId}', event);">

styleClass="faded"
onclick="return
cancelButton('#{compositeComponent.clientId}');" />
....

On Sun, 2009-02-08 at 08:56 -0800, Jim Driscoll wrote:

>
> To see how to call a listener in a component, see here:
>
> http://weblogs.java.net/blog/driscoll/archive/2008/12/jsf_20_wiring_u_1....

[att1.html]

Jim Driscoll

Well, I don't think we have a test that combines composite:actionSource
with composite:attribute method-signature, so you may have found a new
bug. If you remove the actionSource def, does it still fail?

Jim

On 2/8/09 9:30 AM, Lincoln Baxter, III wrote:
> Good call.
>
> My first thought is that I should probably get a more descriptive
> exception, even if I'm using it wrong.
> However, I get the same result :( This is what I did... irrelevant parts
> excluded.
>
> *Bean:*
>
> public void nameListener(final ActionEvent event)
> {
> System.out.println("Listened");
> }
>
>
> *Consumer:*
>
> > submitListener="#{viewProjectBean.nameListener}" />
>
> *Component:*
>
> > displayName="Editable Text Component"
> shortDescription="Editable Text Component">
> > required="true"
> method-signature="void f1(javax.faces.event.ActionEvent)" />
>
>
>

>
>
> .....
> > actionListener="#{compositeComponent.attrs.submitListener}"
> onclick="return submitButton('#{compositeComponent.clientId}',
> event);">
>

> > onclick="return cancelButton('#{compositeComponent.clientId}');" />
> ....
>

>
>
>
>
>
> On Sun, 2009-02-08 at 08:56 -0800, Jim Driscoll wrote:
>>
>> To see how to call a listener in a component, see here:
>>
>> http://weblogs.java.net/blog/driscoll/archive/2008/12/jsf_20_wiring_u_1....
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
For additional commands, e-mail: webtier-help@glassfish.dev.java.net

Jim Driscoll

And I agree, NPE is almost always the wrong exception to throw. Once we
figure out what you're doing that's triggering it, one of us should file
a bug, and see that it's fixed before FCS.

Jim

On 2/8/09 10:06 AM, Jim Driscoll wrote:
> Well, I don't think we have a test that combines composite:actionSource
> with composite:attribute method-signature, so you may have found a new
> bug. If you remove the actionSource def, does it still fail?
>
> Jim
>
> On 2/8/09 9:30 AM, Lincoln Baxter, III wrote:
>> Good call.
>>
>> My first thought is that I should probably get a more descriptive
>> exception, even if I'm using it wrong.
>> However, I get the same result :( This is what I did... irrelevant parts
>> excluded.
>>
>> *Bean:*
>>
>> public void nameListener(final ActionEvent event)
>> {
>> System.out.println("Listened");
>> }
>>
>>
>> *Consumer:*
>>
>> >> submitListener="#{viewProjectBean.nameListener}" />
>>
>> *Component:*
>>
>> >> displayName="Editable Text Component"
>> shortDescription="Editable Text Component">
>> >> required="true"
>> method-signature="void f1(javax.faces.event.ActionEvent)" />
>>
>>
>>

>>
>>
>> .....
>> >> actionListener="#{compositeComponent.attrs.submitListener}"
>> onclick="return submitButton('#{compositeComponent.clientId}',
>> event);">
>>

>> >> onclick="return cancelButton('#{compositeComponent.clientId}');" />
>> ....
>>

>>
>>
>>
>>
>>
>> On Sun, 2009-02-08 at 08:56 -0800, Jim Driscoll wrote:
>>>
>>> To see how to call a listener in a component, see here:
>>>
>>> http://weblogs.java.net/blog/driscoll/archive/2008/12/jsf_20_wiring_u_1....
>>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
> For additional commands, e-mail: webtier-help@glassfish.dev.java.net
>

---------------------------------------------------------------------
To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
For additional commands, e-mail: webtier-help@glassfish.dev.java.net

Jim Driscoll

Since my example doesn't use an Ajax tag, and it does work (I checked it
a couple weeks ago), it's hard to say what's going wrong.

In my example, the ajax call happens in the submitButton method.

Why are you adding the tag?

That aside, an NPE is almost always a bad thing - I'd like to know
exactly how you tickled that, so I can reproduce it and fix it. It
would seem to be an error in our error reporting.

Jim

webtier@javadesktop.org wrote:
> http://weblogs.java.net/blog/driscoll/archive/2008/11/another_jsf_20_1.html
>
> When following this demo, everything works fine until I try to add an actionListener or valueChangeListener to attempt to trigger an action that will actually save the new value. Has anyone had any luck with this? I'd like to pass this listener as an attribute if possible, but again, so far no luck.
>
> I'm trying this:
>
>
> > onclick="return submitButton('#{compositeComponent.clientId}', event);">
>
>

>
> Thanks!
> -Lincoln
> [Message sent by forum member 'lincolnbaxter' (lincolnbaxter)]
>
> http://forums.java.net/jive/thread.jspa?messageID=330205
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
> For additional commands, e-mail: webtier-help@glassfish.dev.java.net
>

---------------------------------------------------------------------
To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
For additional commands, e-mail: webtier-help@glassfish.dev.java.net

lincolnbaxter
Offline
Joined: 2008-03-26
Points: 0

Hey Jim,

Yeah your example works great actually. When I get access to my PC I'll send my examples.

The reason I'm adding the actionListener tag is because I want to be able to take an action once the value has been submitted back to the server.

Right now I am getting around it by using a field in my Managed bean as an intermediary between editText and the nested object field I wish to update. (object.child.field) So editText triggers the setField(String value) method to be called, which in turn is doing a database update in the setter itself.

What I prefer, is to be able to set the value into the object directly, then trigger an action method or actionlistener to be called, which will perform the database update on that object.

This workaround fails, however, as soon as I want to use a tag to display a list of components, each of which is editable.

Is there a simple answer I'm missing?

Thanks,
Lincoln

Lincoln Baxter, III

I tried to trace the exception but it goes into the
ViewRoot.processApplication() method, and for some reason I can't
visually debug through it. Somewhere in that method call is where the
NPE originates.

Ok, so here's what I'm trying to do in my view:

actionListener="#{myBean.listenerSignatureMethod}" />

And here's my component. I've tried various methods of attaching the
action listener (actionSource, usingPageChildren, etc...) all with the
same result, the listener is not called. I've tried using a
valueChangeListener on the inputText field itself (this would be the
best case scenario I think):

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:composite="http://java.sun.com/jsf/composite">

displayName="Editable Text Component"
shortDescription="Editable Text Component">






styleClass="editLink"
onclick="return
linkClick('#{compositeComponent.clientId}');">#{compositeComponent.attrs.value}



These attempts result in a NPE:

com.ocpsoft.storylib.exceptions.SiteRuntimeException:
java.lang.NullPointerException
at
com.ocpsoft.storylib.jsf.filter.ExceptionFilter.wrapException(ExceptionFilter.java:62)
at
com.ocpsoft.storylib.jsf.filter.ExceptionFilter.doFilter(ExceptionFilter.java:47)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint
$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.NullPointerException
at java.io.Writer.write(Writer.java:140)
at
com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:193)
at
com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:116)
at
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.security.util.FilterChainProxy
$VirtualFilterChain.doFilter(FilterChainProxy.java:359)

On Thu, 2009-02-05 at 10:54 -0800, webtier@javadesktop.org wrote:

> Hey Jim,
>
> Yeah your example works great actually. When I get access to my PC I'll send my examples.
>
> The reason I'm adding the actionListener tag is because I want to be able to take an action once the value has been submitted back to the server.
>
> Right now I am getting around it by using a field in my Managed bean as an intermediary between editText and the nested object field I wish to update. (object.child.field) So editText triggers the setField(String value) method to be called, which in turn is doing a database update in the setter itself.
>
> What I prefer, is to be able to set the value into the object directly, then trigger an action method or actionlistener to be called, which will perform the database update on that object.
>
> This workaround fails, however, as soon as I want to use a tag to display a list of components, each of which is editable.
>
> Is there a simple answer I'm missing?
>
> Thanks,
> Lincoln
> [Message sent by forum member 'lincolnbaxter' (lincolnbaxter)]
>
> http://forums.java.net/jive/thread.jspa?messageID=330360
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
> For additional commands, e-mail: webtier-help@glassfish.dev.java.net
>
[att1.html]

Jim Driscoll

I have an additional question: what's the submitButton call doing on
the same tag as the f:ajax tag? Doesn't the submitButton call also call
jsf.request.ajax? Doesn't that mean you're calling jsf.ajax.request
twice? Does it work if you take that out, or still fail?

Jim

On 2/7/09 8:37 AM, Lincoln Baxter, III wrote:
> I tried to trace the exception but it goes into the
> ViewRoot.processApplication() method, and for some reason I can't
> visually debug through it. Somewhere in that method call is where the
> NPE originates.
>
> Ok, so here's what I'm trying to do in my view:
>
> > actionListener="#{myBean.listenerSignatureMethod}" />
>
> And here's my component. I've tried various methods of attaching the
> action listener (actionSource, usingPageChildren, etc...) all with the
> same result, the listener is not called. I've tried using a
> valueChangeListener on the inputText field itself (this would be the
> best case scenario I think):
>
> > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> > xmlns:h="http://java.sun.com/jsf/html"
> xmlns:f="http://java.sun.com/jsf/core"
> xmlns:ui="http://java.sun.com/jsf/facelets"
> xmlns:composite="http://java.sun.com/jsf/composite">
>
> > displayName="Editable Text Component"
> shortDescription="Editable Text Component">
>
>
>

>
>
>
>
>
>

>
> > styleClass="editLink"
> onclick="return
> linkClick('#{compositeComponent.clientId}');">#{compositeComponent.attrs.value}

>

>
>
>
>
>
> *These attempts result in a NPE:*
>
>
> com.ocpsoft.storylib.exceptions.SiteRuntimeException:
> java.lang.NullPointerException
> at
> com.ocpsoft.storylib.jsf.filter.ExceptionFilter.wrapException(ExceptionFilter.java:62)
> at
> com.ocpsoft.storylib.jsf.filter.ExceptionFilter.doFilter(ExceptionFilter.java:47)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
> at
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
> at
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
> at
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
> at
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
> at
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
> at
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
> at
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
> at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: java.lang.NullPointerException
> at java.io.Writer.write(Writer.java:140)
> at
> com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:193)
> at
> com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:120)
> at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:116)
> at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
> at
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
> at
> org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:359)
>
>
> On Thu, 2009-02-05 at 10:54 -0800, webtier@javadesktop.org wrote:
>> Hey Jim,
>>
>> Yeah your example works great actually. When I get access to my PC I'll send my examples.
>>
>> The reason I'm adding the actionListener tag is because I want to be able to take an action once the value has been submitted back to the server.
>>
>> Right now I am getting around it by using a field in my Managed bean as an intermediary between editText and the nested object field I wish to update. (object.child.field) So editText triggers the setField(String value) method to be called, which in turn is doing a database update in the setter itself.
>>
>> What I prefer, is to be able to set the value into the object directly, then trigger an action method or actionlistener to be called, which will perform the database update on that object.
>>
>> This workaround fails, however, as soon as I want to use a tag to display a list of components, each of which is editable.
>>
>> Is there a simple answer I'm missing?
>>
>> Thanks,
>> Lincoln
>> [Message sent by forum member 'lincolnbaxter' (lincolnbaxter)]
>>
>> http://forums.java.net/jive/thread.jspa?messageID=330360
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail:webtier-unsubscribe@glassfish.dev.java.net
>> For additional commands, e-mail:webtier-help@glassfish.dev.java.net
>>

---------------------------------------------------------------------
To unsubscribe, e-mail: webtier-unsubscribe@glassfish.dev.java.net
For additional commands, e-mail: webtier-help@glassfish.dev.java.net

Lincoln Baxter, III

On Sat, 2009-02-07 at 20:58 -0800, Jim Driscoll wrote:

> what's the submitButton call doing on
> the same tag as the f:ajax tag?

Oops, leftover from an attempt. I removed this and it still exhibits the
same behavior. I'm working on the snapshot:
INFO: Initializing Mojarra 2.0.0 (SNAPSHOT 20090129) for context

--Lincoln
[att1.html]

lincolnbaxter
Offline
Joined: 2008-03-26
Points: 0

PS. I get a NullPointerException on the server side...

Caused by: java.lang.NullPointerException
at java.io.Writer.write(Writer.java:140)
at com.sun.faces.context.AjaxExceptionHandlerImpl.handlePartialResponseError(AjaxExceptionHandlerImpl.java:193)
at com.sun.faces.context.AjaxExceptionHandlerImpl.handle(AjaxExceptionHandlerImpl.java:120)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:116)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:310)
...