Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » Struts 2 »

Re: about linking two autocompleters using topics [never surrender
:)]

Jeromy Evans - Blue Sky Minds

2007-12-04

Replies:

Giovanni Azua wrote:
> hi,
>
> I have been recently asking how to achieve that changing the value of
> autocompleter A, triggers an Ajax reload of autocompleter B and make
> the only item returned as selected on B i.e. displayed in its
> textInputNode.
>
> I followed directions from:
> http://struts.apache.org/2.x/docs/ajax-and-javascript-recipes.html#AjaxandJavaScriptRecipes-Linktwoautocompleters%252Cusingtopics
>
>
> and the reload works okay but making the only element in the ComboBox
> selected and displayed in autocompleter textInputNode is the remaining
> issue.
>
> Trying to hack some javascript that will do, below is the code to the
> closest I've got.
> I manage that after the reload the autocompleter displays "kaki" big
> deal! but not yet
> to display the only item out of the ComboBox.
>
> Ehh please help :)
>
> regards,
> Giovanni
>
Hi Giovanni,

I don't use dojo's autocompleter myself, but after a quick look at the
javascript source for the widget (ComboBox) I can see there's a public
method setSelectedValue(value) which may help, although it's not clear
to me which component of the ComboBox is updated....The js source is
pretty horrible.

My approach would be to start firebug, load your page and place a
breakpoint in your callback function. When the callback is fired, use
firebug's DOM inspection to browse for public methods in the widget
instance returned by dojo.widget.byId() and see if there's anything
useful. Use the watch to call methods directly.

Hope that helps,
Jeromy Evans


> ***************************** mypage.jsp ****************************
>
> <script type="text/javascript">
> dojo.event.topic.subscribe("/after", function(data, type, request)
> {
>   //data : text returned from request
>   //request: XMLHttpRequest object
>   //widget: widget that published the topic
>   // alert(widget.optionsListNode.childNodes.length);
>   // alert('happened');
>   if (type == "load")
>   {
>      var widget = dojo.widget.byId("eurosPerListedUnit0");
>      alert(widget.comboBoxValue.size);
>      widget.textInputNode.value = "kaki";
>   }
>   // widget.textInputNode.value = widget.comboBoxValue.value;
> }); </script>
>
> <s:url var="exchangeRates" action="AjaxGetExchangeRates.action" />
>
> <s:form id="formSimulation" action="%{targetAction}" method="post"
> theme="%{currentTheme}">
>   <sx:autocompleter tooltip="Provide the first Historic Book"
> valueNotifyTopics="/changedHistoricBook0" searchType="substring"
> label="Historic Book 1" cssStyle="width: 250px;" dropdownHeight="180"
> name="historicBook0" list="historicBooks" listKey="id"
> listValue="name" />       ...
>   <sx:autocompleter id="eurosPerListedUnit0" tooltip="Provide the
> Currency Rate 1" formId="formSimulation" href="%{#exchangeRates}"
> listenTopics="/changedHistoricBook0"
>     label="Currency Rate 1" cssStyle="width: 250px;"
> name="eurosPerListedUnit0" autoComplete="false" notifyTopics="/after" />
>   ...
>   <s:submit value="%{buttonLabel}" align="center"/>
> </s:form>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@(protected)
> For additional commands, e-mail: user-help@(protected)
>
>
>
>


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@(protected)
For additional commands, e-mail: user-help@(protected)

©2008 junlu.com - Jax Systems, LLC, U.S.A.