Return-Path: Delivered-To: apmail-incubator-myfaces-dev-archive@www.apache.org Received: (qmail 72347 invoked from network); 12 Feb 2005 20:24:17 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur-2.apache.org with SMTP; 12 Feb 2005 20:24:17 -0000 Received: (qmail 45765 invoked by uid 500); 12 Feb 2005 20:24:16 -0000 Delivered-To: apmail-incubator-myfaces-dev-archive@incubator.apache.org Received: (qmail 45724 invoked by uid 500); 12 Feb 2005 20:24:16 -0000 Mailing-List: contact myfaces-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: "MyFaces Development" Delivered-To: mailing list myfaces-dev@incubator.apache.org Received: (qmail 45710 invoked by uid 99); 12 Feb 2005 20:24:15 -0000 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests=RCVD_BY_IP,SPF_HELO_PASS,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (hermes.apache.org: domain of martin.marinschek@gmail.com designates 64.233.184.194 as permitted sender) Received: from wproxy.gmail.com (HELO wproxy.gmail.com) (64.233.184.194) by apache.org (qpsmtpd/0.28) with ESMTP; Sat, 12 Feb 2005 12:24:15 -0800 Received: by wproxy.gmail.com with SMTP id 58so1636298wri for ; Sat, 12 Feb 2005 12:24:12 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:reply-to:to:subject:in-reply-to:mime-version:content-type:content-transfer-encoding:references; b=WXhB/0k+R4qyBOWAgH+O+vjG+RkcnhrqrIpoc5kVpi5wr5laHWH4itGTS/5BfEBB00NdTNTZt9xmdXJb+G7xKz1tll//DbQkmvs2J7KucqQxUaJ7Kz+DfHkysl3HMNPjzCcJ7TvG29+zDoi+UBLB7bQ7EyzPVnNQapayv1zxzGE= Received: by 10.54.14.3 with SMTP id 3mr168366wrn; Sat, 12 Feb 2005 12:24:12 -0800 (PST) Received: by 10.54.25.7 with HTTP; Sat, 12 Feb 2005 12:24:12 -0800 (PST) Message-ID: <5a99335f0502121224465df649@mail.gmail.com> Date: Sat, 12 Feb 2005 21:24:12 +0100 From: Martin Marinschek Reply-To: martin@marinschek.com To: MyFaces Development Subject: Re: Another bug in h:selectBooleanCheckbox while embeded in a x:dataTable In-Reply-To: <1108236487.19198.9.camel@localhost.localdomain> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit References: <1107887132.310.11.camel@localhost.localdomain> <1108130651.20347.92.camel@localhost.localdomain> <5a99335f0502110822cea07b@mail.gmail.com> <1108142839.20347.98.camel@localhost.localdomain> <2387fbc505021113327694a953@mail.gmail.com> <1108167537.20347.112.camel@localhost.localdomain> <2387fbc505021207516d1a355b@mail.gmail.com> <1108228042.19198.5.camel@localhost.localdomain> <5a99335f050212102020b2cfff@mail.gmail.com> <1108236487.19198.9.camel@localhost.localdomain> X-Virus-Checked: Checked X-Spam-Rating: minotaur-2.apache.org 1.6.2 0/1000/N yes, that is wrong... the preserve data model does only work if the component is rendered - in this case it is not, as you are tabbing away to the other tab... try it with an x:saveState statement... regards, Martin On Sat, 12 Feb 2005 15:28:07 -0400, Sylvain Vieujot wrote: > Hello Martin, > > No, I didn't include any x:saveState. > I thought the preserveDataModel would do that. > Am I wrong ? > > Sylvain > > > On Sat, 2005-02-12 at 19:20 +0100, Martin Marinschek wrote: > you need to save the state of the checkboxes - do you do that? do you have > an x:saveState tag on the top of the jsp? I don't know, I can't check the > cvs right now, but if not, you need to save the state of your managed > bean... regards, Martin On Sat, 12 Feb 2005 13:07:22 -0400, Sylvain Vieujot > wrote: > Hello Sean, > > I agree that checkboxes are > being reset on decode as long as no value is > posted, BUT only the childs > of the selected panelTab are decoded, so this > doesn't affect the > components of un-selected tabs as they aren't decoded. > > Plus, in the > examples webapp, on the first tab, the "A checkbox" checkbox > is rendered > only on that tab, and isn't common to all tabs. > > Also, I just committed a > change to the webapp that shows that the problem > isn't specific to > checkboxes. > In the dataTable, tab3, you now also have texts next to the > checkboxes, and > the texts are reset too. > > Sylvain. > > > On Sat, > 2005-02-12 at 10:51 -0500, Sean Schofield wrote: > Sylvain, The other > checkboxes aren't reset because they are on every tab. > They are always > being resubmitted. Would you agree that the checkboxes are > being reset on > the decode as long as no value is posted (and that they are > not disabled)? > That much seems clear from the decodeUISelectBoolean method. > The only > thing I can't be sure of is that the values aren't being posted. I > didn't > have time to prove that. You can prove it yourself with a simple > test. > Just add a break point in HtmlRendererUtils:decodeUISelectBoolean > method. > Then start with the debugger. When you hit the breakpoint take a > look at > the param map and see if the values for those checkboxes are being > > submitted. sean > I don't think this is the problem now. > What you > > described was a previous bug, but now the pannelTab decodes only > the right > > components. > So, the checkboxes from another tab aren't decoded & reset. > > > > Furthermore, if this were the case, the checkbox from tab 1 would > reset > too, > and it doesn't. > I'll try to include h:inputText in the > dataTable to > see if we have the same > behaviour, or if it's related to > the checkBox. > > > Sylvain. > > > On Fri, 2005-02-11 at 16:32 -0500, Sean > Schofield wrote: > > Sylvain, I figured out your problem. Its a combination > of the checkbox and > > the panel tab together. The datatable is not the > problem. The default > > behavior for the checkbox is to *reset* the value > of the checkbox during the > > decode phase. (See > HtmlRendererUtils:decodeUISelectBoolean.) This makes > > sense because HTML > standard will not submit "false" values for unchecked > > checkboxes. So > unless the checkbox is disabled, faces assumes that it > is > unchecked and > rechecks it every time its posted (as long as the value is > > submitted as > true.) IMO this is desirable (and I believe probably part of > > the spec.) > As I mentioned your example works fine if you press the "common > > submit > button" on the tab (checkbox with true stays checked after the > > post.) > The problem starts once you click on another tab. I didn't have > > time to > investigate the specifics but I think I have discovered the > basic > > problem. You checkbox value does not get posted when you click on one > of > > the other tabs. Even if it does get posted, it is posted to a > request > > scope bean. Say you go from tab 3 to tab 1. On tab 1 your > sample > > checkboxes are not rendered so when you click back to tab 3, you > are *not* > > posting any values for them. Because the decode is resetting the > values, > > you end up with "false" for all of your checkboxes. The other > checkboxes > > are ok because they are common to all 3 tabs so they constantly > get > > posted. That's the source of the problem. I will try and learn more > about > > panelTab so I can help with the fix but there are some > complicated > choices > to make. I suppose for now you could have the checkboxes > be > hidden on the > tabs where they shouldn't be displayed so that they > are > common to all > tabs. HTH, sean