|
I have found a bug in the generated _javascript_ for the Select*Shuttle
components. A patch follows: TrShuttleProxy._getDescArray = function(listName) { // var descArray = window[listName.replace(':','_') + '_desc']; var descArray = window[listName.replace(/:/g,'_') + '_desc']; // gsl fix return descArray; } where listName is content:shuttle1:leading. The problem is that the listName is not using a global replace; therefore only the first ':' is being replaced. This worked fine in ADF Faces before porting to Trinidad where the listName was just "shuttle1:leading". Note, however, that Trinidad now adds an additional "content" prefix to the generated inline _javascript_ variables: content_shuttle1_leading_desc=new Array('The First Item Desc',
'The Second Item Desc',
'The Third Item Desc','');
content_shuttle1_trailing_desc=new Array('');
This means that a global replace needs to be done to create the proper variable name for matching in the _javascript_ code. I will report this on Jira for the Trinidad project. I don't have access to the latest snapshots. The last one I see is from July 11th at: http://people.apache.org/repo/m2-snapshot-repository/org/apache/myfaces/trinidad/trinidad-impl/1.2.1-SNAPSHOT/ If this has been fixed already, then please clear my bug report which should have the side benefit of letting people know that the bug has been found and fixed already. -=> Gregg <=- Gregg Leichtman wrote: I am trying to get the leadingDescShown and trailingDescShown attributes to work for the Trinidad v1.2.1 SelectOrderShuttle. I have the shuttle working for everything except for displaying the description of a selected item in the textarea below the leading or trailing shuttle. I'm running under Linux and Eclipse 3.3 Europa using J2EE5 with JSF 1.2 and Tiles 2.0.4. I have a tile as follows:<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %> <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %> <%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %> <%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %> <%@ taglib uri="http://myfaces.apache.org/trinidad" prefix="tr"%> <tr:form> <tr:panelGroupLayout layout="vertical"> <f:facet name="separator"> <tr:separator /> </f:facet> <tr:messages/> <tr:selectOrderShuttle id="shuttle1" label="Selected Values" leadingHeader="Available values:" leadingDescShown="true" trailingHeader="Selected values:" trailingDescShown="true" binding="#{editor.component}" valueChangeListener="#{list.valueChanged}" value="#{list.stringArray}"> <tr:selectItem shortDesc="The First Item Desc" longDesc="" label="First" value="foo"/> <tr:selectItem shortDesc="The Second Item Desc" longDesc="" label="Second" value="bar"/> <tr:selectItem shortDesc="The Third Item Desc" longDesc="" label="Third" value="baz"/> </tr:selectOrderShuttle> <tr:message for=""/> <tr:commandButton text="Submit"/> </tr:panelGroupLayout> </tr:form> The layout page uses f:view wrapping trh:html, trh:head and trh:body. The trh:body element wraps one of several subviews which wrap several tiles one of which is the above tile. An excerpt from the generated page looks like this: ... <form id="content:j_id_jsp_709084578_0pc4" name="content:j_id_jsp_709084578_0pc4" style="margin:0px" method="POST" action=""><!--Start: org.apache.myfaces.trinidad.Panel["j_id_jsp_709084578_1pc4"]--><div><!--Start: org.apache.myfaces.trinidad.Messages["j_id_jsp_709084578_3pc4"]--><span id="content:j_id_jsp_709084578_3pc4"></span><div><!--Start: org.apache.myfaces.trinidad.Object["j_id_jsp_709084578_2pc4"]--> <hr class="af_separator"> </div><script>var _shuttle_no_items='There are no items to move.';var _shuttle_no_items_selected='Please select the items to move first.';</script><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><table cellpadding="0" cellspacing="0" border="0" width="10%" summary="" id="content:shuttle1" class="af_selectManyShuttle"><tr> <td class="x9u" valign="bottom">Available values:</td> <td></td> <td class="x9u" valign="bottom">Selected values:</td> </tr><tr> <td><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><table class="af_selectOrderShuttle_box" style="width:100%" cellpadding="0" cellspacing="0" border="0" summary=""><tbody><tr> <td class="af_selectOrderShuttle_box-top-start"></td> <td class="af_selectOrderShuttle_box-top"></td> <td class="af_selectOrderShuttle_box-top-end"></td> </tr><tr> <td class="af_selectOrderShuttle_box-start"></td> <td class="x59"><div class="x55"><table cellpadding="0" border="0" summary=""><tr> <td nowrap valign="middle"><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><span class="x1i"> <select multiple id="content:shuttle1:leading" name="content:shuttle1:leading" title="Available values:" class="x1y" size="10"> <option value="0" title="The First Item Desc">First</option> <option value="1" title="The Second Item Desc">Second</option> <option value="2" title="The Third Item Desc">Third</option> <option value="">_______________</option> </select> <!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Available values:</label></span></td> </tr><tr> <td nowrap valign="middle"></td> <td><img src="" alt="" width="1" height="8"></td> </tr><tr> <td nowrap valign="middle" colspan="3"><span class="x0">Description</span><div></div> <textarea rows="2" id="content:shuttle1:leading:desc" name="content:shuttle1:leading:desc" readonly cols="18" wrap="soft"></textarea> <!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Description</label></td> <td><img src="" alt="" width="1" height="68"></td> </tr></table></div></td> <td class="af_selectOrderShuttle_box-end"></td> </tr><tr> <td class="af_selectOrderShuttle_box-bottom-start"></td> <td class="af_selectOrderShuttle_box-bottom"></td> <td class="af_selectOrderShuttle_box-bottom-end"></td> </tr></tbody></table></td> <td align="center" valign="middle" nowrap style="padding:5px"><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveItems('content:shuttle1:leading','content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._moveItems('content:shuttle1:leading','content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" style="display:block" title="Move selected items to other list" alt="Move selected items to other list"></a><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveItems('content:shuttle1:leading','content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._moveItems('content:shuttle1:leading','content:shuttle1:trailing');" class="xi" title="Move selected items to other list">Move</a><div style="margin-top:5px"></div><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveAllItems('content:s huttle1:leading','content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:leading','content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" style="display:block" title="Move all items to other list" alt="Move all items to other list"></a><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:leading','content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:leading','content:shuttle1:trailing');" class="xi" title="Move all items to other list">Move All</a><div style="margin-top:5px"></div><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveItems('content:shuttle1:trailing','content:shuttle1:leading');">"_javascript_:TrShuttleProxy._moveItems('content:shuttle1:trailing','content:shuttle1:leading');"><img src="" width="16" height="16" border="0" style="display:block" title="Remove selected items from list" alt="Remove selected items from list"></a><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveItems('content:shuttle1:trailing','content:shuttle1:leading');">"_javascript_:TrShuttleProxy._moveItems('content:shuttle1:trailing','content:shuttle1:leading');" class="xi" title="Remove selected items from list">Remove</a><div style="margin-top:5px"></div><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:trailing','content:shuttle1:leading');">"_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:trailing','content:shuttle1:leading');"><img src="" width="16" height="16" border="0" style="display:block" title="Remove all items from list" alt="Remove all items from list"></a><a href=< a class="moz-txt-link-rfc2396E" href="">"_javascript_:TrShuttleProxy._moveAllItems('content:shuttle1:trailing','content:shuttle1:leading');" class="xi" title="Remove all items from list">Remove All</a></td> <td><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><table class="af_selectOrderShuttle_box" style="width:100%" cellpadding="0" cellspacing="0" border="0" summary=""><tbody><tr> <td class="af_selectOrderShuttle_box-top-start"></td> <td class="af_selectOrderShuttle_box-top"></td> <td class="af_selectOrderShuttle_box-top-end"></td> </tr><tr> <td class="af_selectOrderShuttle_box-start"></td> <td class="x59"><div class="x55"><table cellpadding="0" border="0" summary=""><tr> <td nowrap valign="middle"><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><span class="x1i"> <select multiple id="content:shuttle1:trailing" name="content:shuttle1:trailing" title="Selected values:" class="x1y" size="10"> <option value="">_______________</option> </select> <!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Selected values:</label></span></td> <td align="center" valign="middle"><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._orderTopBottomList(0,'content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._orderTopBottomList(0,'content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" title="Move selected items to top of list" alt="Move selected items to top of list"></a><br><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._orderList(0,'content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._orderList(0,'content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" title="Move selected items up one in list" alt="Move selected items up one in list"></a><img src="" alt="" width="1" height="15"><br><a href="" class="moz- txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._orderList(1,'content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._orderList(1,'content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" title="Move selected items down one in list" alt="Move selected items down one in list"></a><br><a href="" class="moz-txt-link-rfc2396E" href="_javascript_:TrShuttleProxy._orderTopBottomList(1,'content:shuttle1:trailing');">"_javascript_:TrShuttleProxy._orderTopBottomList(1,'content:shuttle1:trailing');"><img src="" width="16" height="16" border="0" title="Move selected items to bottom of list" alt="Move selected items to bottom of list"></a></td> <td></td> </tr><tr> <td nowrap valign="middle"></td> <td><img src="" alt="" width="1" height="8"></td> </tr><tr> <td nowrap valign="middle" colspan="3"><span class="x0">Description</span><div></div> <textarea rows="2" id="content:shuttle1:trailing:desc" name="content:shuttle1:trailing:desc" readonly cols="18" wrap="soft"></textarea> <!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Description</label></td> <td><img src="" alt="" width="1" height="68"></td> </tr></table></div></td> <td class="af_selectOrderShuttle_box-end"></td> </tr><tr> <td class="af_selectOrderShuttle_box-bottom-start"></td> <td class="af_selectOrderShuttle_box-bottom"></td> <td class="af_selectOrderShuttle_box-bottom-end"></td> </tr></tbody></table><input type="hidden" name="content:shuttle1:leading:items" value="0;1;2;"><input type="hidden" name="content:shuttle1:trailing:items" value=""><script>content_shuttle1_leading_desc=new Array('The First Item Desc','The Second Item Desc','The Third Item Desc','');content_shuttle1_trailing_desc=new Array('');window["_content_j_id_jsp_709084578_0pc4_content_shuttle1_orig"]=TrShuttleProxy._copyLists('content_shuttle1','content_j_id_jsp_709084578_0pc4');</script></td> </tr></table><!--Start: org.apache.myfaces.trinidad.SelectOrder["shuttle1"]--><label for="" class="x8v">Selected Values</label><div><!--Start: org.apache.myfaces.trinidad.Object["j_id_jsp_709084578_2pc4"]--> <hr class="af_separator"> </div><!--Start: org.apache.myfaces.trinidad.Message["j_id_jsp_709084578_8pc4"]--><span class="x89"><span id="content:shuttle1::msg" style="display:none;" class="x8e"></span></span><div><!--Start: org.apache.myfaces.trinidad.Object["j_id_jsp_709084578_2pc4"]--> <hr class="af_separator"> </div><!--Start: org.apache.myfaces.trinidad.Command["j_id_jsp_709084578_9pc4"]--> <button type="button" class="x6l">Submit</button> </div><input type="hidden" name="org.apache.myfaces.trinidad.faces.FORM" value="content:j_id_jsp_709084578_0pc4"><span id="_content:j_id_jsp_709084578_0pc4_Postscript"><input type="hidden" name="javax.faces.ViewState" value="!7dd856e8"><script>function _content_j_id_jsp_709084578_0pc4Validator(){return true;}var content_j_id_jsp_709084578_0pc4_SF={};</script><script>var _content_j_id_jsp_709084578_0pc4_Reset=['_resetItems(\'content_shuttle1\',\'content_j_id_jsp_709084578_0pc4\');'];</script></span><script>_submitFormCheck();</script> </form> ... I have not included the generated Trinidad _javascript_, but I have confirmed that it is generated at http://localhost:8080/myWebApp/adf/jsLibs/DebugCommon1_2_1.js where _javascript_ debug output from Trinidad is turned on. I noticed that the live demo does work for the SelectManyShuttle when you turn on the leading and trailingDescShown attributes using the embedded attribute editor. I also noticed that the generated live demo _javascript_ code appears to be different than the generated code that I am seeing in my HTML. I can see that there is a hidden input element with its onchange attribute set to: and that there is inline _javascript_ generated as: <script>content_shuttle1_leading_desc=new Array('The First Item Desc', 'The Second Item Desc', 'The Third Item Desc',''); content_shuttle1_trailing_desc=new Array(''); window["_content_j_id_jsp_709084578_0pc4_content_shuttle1_orig"]= TrShuttleProxy._copyLists('content_shuttle1','content_j_id_jsp_709084578_0pc4'); </script> I could grab the generated source and the generated _javascript_ and put the two together, but I'm hesitant to go to them much reverse engineering effort, if someone can see the problem and offer a solution or offer a simple example first. Has anyone else succeeded in getting the SelectOrderShuttle leading or trailingDescShown textarea working? If so, can you see what I have failed to do or alternatively post a "small" example that works with Trinidad v1.2.1? I have also tried a SelectManyShuttle and everything works with it as well except, of course, displaying the description in the text area. -=> Gregg <=- |
signature.asc
Description: OpenPGP digital signature

