Fork me on GitHub
Edit on GitHub

autocompleter

Description

The autocomplete tag is a combobox that can autocomplete text entered on the input box. If an action is used to populate the autocompleter, the output of the action must be a well formed JSON string.

The autocompleter follows this rule to find its datasource:

1. If the response is an array, assume that it contains 2-dimension array elements, like:

 [
      ["Alabama", "AL"],
      ["Alaska", "AK"]
 ]
 

2. If a value is specified in the "dataFieldName" attribute, and the response has a field with that name, assume that's the datasource, which can be an array of 2-dimension array elements, or a map, like (assuming dataFieldName="state"):

 {
      "state" : [
           ["Alabama","AL"],
           ["Alaska","AK"]
      ]
 }     
 or
 {
      "state" : {
            "Alabama" : "AL",
            "Alaska" : "AK"
      }
 }
 

3. If there is a field that starts with the value specified on the "name" attribute, assume that's the datasource, like (assuming name="state"):

 {
      "states" : [
           ["Alabama","AL"],
           ["Alaska","AK"]
      ]
 }
 

4. Use first array that is found, like:

 {
      "anything" : [
            ["Alabama", "AL"],
            ["Alaska", "AK"]
     ]       
 }
 

5. If the response is a map, use it (recommended as it is the easiest one to generate):

 {
      "Alabama" : "AL",
      "Alaska" : "AK"
 }
 

__Parameters__

Dynamic Attributes Allowed:

false
 

Name

Required

Default

Evaluated

Type

Description

accesskey false false String Set the html accesskey attribute on rendered html element
afterNotifyTopics false false String Comma delimmited list of topics that will published after the request(if the request succeeds)
autoComplete false false false Boolean Whether autocompleter should make suggestion on the textbox
beforeNotifyTopics false false String Comma delimmited list of topics that will published before the request
cssClass false false String The css class to use for element
cssErrorClass false false String The css error class to use for element
cssErrorStyle false false String The css error style definitions for element to use
cssStyle false false String The css style to use for element
dataFieldName false Value specified in 'name' false String Name of the field in the returned JSON object that contains the data array
delay false 100 false Integer Delay before making the search
disabled false false false Boolean Enable or disable autocompleter
dropdownHeight false 120 false Integer Dropdown's height in pixels
dropdownWidth false same as textbox false Integer Dropdown's width
emptyOption false false String Decide if an empty option is to be inserted. Default false.
errorNotifyTopics false false String Comma delimmited list of topics that will published after the request(if the request fails)
errorPosition false false String Define error position of form element (top|bottom)
forceValidOption false false false Boolean Force selection to be one of the options
formFilter false false String Function name used to filter the fields of the form
formId false false String Form id whose fields will be serialized and passed as parameters
headerKey false false String Set the header key for the header option.
headerValue false false String Set the header value for the header option.
href false false String The URL used to load the options
iconPath false false String Path to icon used for the dropdown
id false false String The id to use for the element
indicator false false String Id of element that will be shown while request is made
javascriptTooltip false false false Boolean Use JavaScript to generate tooltips
key false false String Set the key (name, value, label) for this particular component
keyName false false String Name of the field to which the selected key will be assigned
keyValue false false String Initial key value
label false false String Label expression used for rendering an element specific label
labelSeparator false : false String String that will be appended to the label
labelposition false false String Define label position of form element (top/left)
list false false String Iteratable source to populate from.
listKey false false String Set the key used to retrive the option key.
listValue false false String Set the value used to retrive the option value.
listenTopics false false String Topic that will trigger a reload
loadMinimumCount false 3 false Integer Minimum number of characters that will force the content to be loaded
loadOnTextChange false true false Boolean Options will be reloaded everytime a character is typed on the textbox
maxLength false false Integer Deprecated. Use maxlength instead.
maxlength false false Integer HTML maxlength attribute
name false false String The name to set for element
notifyTopics false false String Topics that will be published when content is reloaded
onblur false false String Set the html onblur attribute on rendered html element
onchange false false String Set the html onchange attribute on rendered html element
onclick false false String Set the html onclick attribute on rendered html element
ondblclick false false String Set the html ondblclick attribute on rendered html element
onfocus false false String Set the html onfocus attribute on rendered html element
onkeydown false false String Set the html onkeydown attribute on rendered html element
onkeypress false false String Set the html onkeypress attribute on rendered html element
onkeyup false false String Set the html onkeyup attribute on rendered html element
onmousedown false false String Set the html onmousedown attribute on rendered html element
onmousemove false false String Set the html onmousemove attribute on rendered html element
onmouseout false false String Set the html onmouseout attribute on rendered html element
onmouseover false false String Set the html onmouseover attribute on rendered html element
onmouseup false false String Set the html onmouseup attribute on rendered html element
onselect false false String Set the html onselect attribute on rendered html element
preload false true false Boolean Load options when page is loaded
readonly false false false Boolean Whether the input is readonly
requiredLabel false false false Boolean If set to true, the rendered element will indicate that input is required
requiredPosition false false String Define required position of required form element (left|right)
resultsLimit false 30 false Integer Limit how many results are shown as autocompletion options, set to -1 for unlimited results
searchType false stringstart false String how the search must be performed, options are: 'startstring', 'startword' and 'substring'
showDownArrow false true false Boolean Show or hide the down arrow button
size false false Integer HTML size attribute
style false false String The css style definitions for element to use - it's an alias of cssStyle attribute.
tabindex false false String Set the html tabindex attribute on rendered html element
template false false String The template (other than default) to use for rendering the element
templateCssPath false false String Template css path
templateDir false false String The template directory.
title false false String Set the html title attribute on rendered html element
tooltip false false String Set the tooltip of this particular component
tooltipConfig false false String Deprecated. Use individual tooltip configuration attributes instead.
tooltipCssClass false StrutsTTClassic false String CSS class applied to JavaScrip tooltips
tooltipDelay false Classic false String Delay in milliseconds, before showing JavaScript tooltips
tooltipIconPath false false String Icon path used for image that will have the tooltip
transport false XMLHTTPTransport false String Transport used by Dojo to make the request
type false text false String Specifies the html5 type element to display. e.g. text, email, url
value false false String Preset the value of input element
valueNotifyTopics false false String Comma delimmited list of topics that will published when a value is selected

__Examples__ Get list from an action: ```xml ``` Uses a list: ```xml ``` Autocompleter that reloads its content everytime the text changes (and the length of the text is greater than 3): ```xml The text entered on the autocompleter is passed as a parameter to the url specified in "href", like (text is "struts"): http://host/example/myaction.do?mvc=struts ``` Linking two autocompleters: ```xml
``` Set/Get selected values using JavaScript: ```xml ``` Using beforeNotifyTopics: ```xml <sx:autocompleter beforeNotifyTopics="/before" href="%{#ajaxTest} /> ``` Using errorNotifyTopics: ```xml ``` Using errorNotifyTopics:

Using valueNotifyTopics:

__Caveats__ + The service that is producing the HTTP Response with JSON response to the Autocompleter tag must set the HTTP Header Response Content-Type to ~~~~~~~ text/json ~~~~~~~ . JSON has its own MIME type, which this tag expects. + Since 2.0.9, there is a change in the value:key order. Now, the value **must** come before the key.