I made an incorrect assumption on how the shuttle proxy's JavaScript addItem method works. Apparently, it does NOT pass enough information back to the server for the server to construct a new SelectItem and add it to the shuttle component trailing list, even then it could be changed to do this. Only the SelectItem VALUES are round-tripped through the server. To solve this, since I want the trailing list to display any new items added with addItem, I take the value returned to the server (which includes enough encoded information to build a SelectItem---item text, value, etc.), decode the value, construct a new SelectItem within a valueChangeListener attached to the shuttle and attach the new SelectItem to the shuttle component's list of SelectItems at which point the Trinidad code NOW finds a value match within the list of SelectItems and automatically places the new SelectItem back in the trailing list for display.

It should be noted that the information needed to reconstruct a new SelectItem is encoded within the passed value as character delimited parameters. This actually should be done via a converter and eventually I plan on doing just that.

Finally, the "WARNING: Parameters: Invalid chunk ignored." message from the server was not related to the above problem. It was being caused by dojo widgets in the Faces page that did not have a "name" attribute attached to them. Simply adding "name=something" where "something" was set to be identical to the value used for the id attribute eliminated this problem.

                                                       -=> Gregg <=-

Gregg Leichtman wrote:
I have a selectOrderShuttle that is partially working. I am using a value pass through. I can populate the leading shuttle, can move any or all items to the trailing shuttle and can post to the server and receive the page back with a value change event method being invoked. The returned page indicates that the selected value from the trailing list has been received and a message created in the value change method is displayed on the updated page. In addition the trailing list shows the selected item after page update. In other words everything works as I would expect it to.

Unfortunately, when I use a client-only button with an attached JavaScript method that invokes the shuttle proxy using the addItem method, not all is well. Specifically, the item is added to the trailing shuttle where I tell it to be added as the first and only item. Following this, when a submit button is clicked, the value is posted to the server and the value change method clearly shows that the selected item's value that was added by addItem has been sent to the server intact. However, the returned page does not display this selected item's text after the POST, even though the message sent back in the page shows that the new value is the item that was sent. I also have noticed that I'm getting a "WARNING: Parameters: Invalid chunk ignored." message from the server most likely when it is trying to parse the request parameters and probably hitting a "&=&" string fragment or equivalent due to a missing parameter. I suspect that this is happening because there is a missing request parameter that is supposed to be the item's text, even though the shuttle's hidden input element containing the value does appear to be passed. I don't get this warning for the first use case above that works.

Has anybody gotten the shuttle proxy's addItem method to work with a round trip through the server and if so can you post a small working example or point me to one?

                                    -=> Gregg <=-


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to