org.apache.struts2.dojo.components
Class Autocompleter

java.lang.Object
  extended by org.apache.struts2.components.Component
      extended by org.apache.struts2.components.UIBean
          extended by org.apache.struts2.components.TextField
              extended by org.apache.struts2.components.ComboBox
                  extended by org.apache.struts2.dojo.components.Autocompleter

public class Autocompleter
extends ComboBox

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"
 }
 

Examples

<sx:autocompleter name="autocompleter1" href="%{jsonList}"/> <s:autocompleter name="test" list="{'apple','banana','grape','pear'}" autoComplete="false"/> <sx:autocompleter name="mvc" href="%{jsonList}" loadOnTextChange="true" loadMinimumCount="3"/> 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 <form id="selectForm"> <sx:autocompleter name="select" list="{'fruits','colors'}" valueNotifyTopics="/changed" /> </form> <sx:autocompleter href="%{jsonList}" formId="selectForm" listenTopics="/changed"/> <sx:autocompleter href="%{jsonList}" id="auto"/> <script type="text/javascript"> function getValues() { var autoCompleter = dojo.widget.byId("auto"); //key (in the states example above, "AL") var key = autoCompleter.getSelectedKey(); alert(key); //value (in the states example above, "Alabama") var value = autoCompleter.getSelectedValue(); alert(value); //text currently on the textbox (anything the user typed) var text = autoCompleter.getText(); alert(text); } function setValues() { var autoCompleter = dojo.widget.byId("auto"); //key (key will be set to "AL" and value to "Alabama") autoCompleter.setSelectedKey("AL"); //value (key will be set to "AL" and value to "Alabama") autoCompleter.setAllValues("AL", "Alabama"); } </script> <script type="text/javascript"> dojo.event.topic.subscribe("/before", function(event, widget){ alert('inside a topic event. before request'); //event: set event.cancel = true, to cancel request //widget: widget that published the topic }); </script> <sx:autocompleter beforeNotifyTopics="/before" href="%{#ajaxTest} /> <script type="text/javascript"> dojo.event.topic.subscribe("/after", function(data, request, widget){ alert('inside a topic event. after request'); //data : JavaScript object from parsing response //request: XMLHttpRequest object //widget: widget that published the topic }); </script> <sx:autocompleter afterNotifyTopics="/after" href="%{#ajaxTest}" /> <script type="text/javascript"> dojo.event.topic.subscribe("/error", function(error, request, widget){ alert('inside a topic event. on error'); //error : error object (error.message has the error message) //request: XMLHttpRequest object //widget: widget that published the topic }); </script> <sx:autocompleter errorNotifyTopics="/error" href="%{#ajaxTest}" /> <script type="text/javascript"> dojo.event.topic.subscribe("/value", function(value, key, text, widget){ alert('inside a topic event. after value changed'); //value : selected value (like "Florida" in example above) //key: selected key (like "FL" in example above) //text: text typed into textbox //widget: widget that published the topic }); </script> <sx:autocompleter valueNotifyTopics="/value" href="%{#ajaxTest}" />


Field Summary
protected  java.lang.String afterNotifyTopics
           
protected  java.lang.String autoComplete
           
protected  java.lang.String beforeNotifyTopics
           
protected  java.lang.String dataFieldName
           
protected  java.lang.String delay
           
protected  java.lang.String disabled
           
protected  java.lang.String dropdownHeight
           
protected  java.lang.String dropdownWidth
           
protected  java.lang.String errorNotifyTopics
           
protected  java.lang.String forceValidOption
           
protected  java.lang.String formFilter
           
protected  java.lang.String formId
           
protected  java.lang.String href
           
protected  java.lang.String iconPath
           
protected  java.lang.String indicator
           
protected  java.lang.String keyName
           
protected  java.lang.String keyValue
           
protected  java.lang.String listenTopics
           
protected  java.lang.String loadMinimumCount
           
protected  java.lang.String loadOnTextChange
           
protected  java.lang.String notifyTopics
           
protected  java.lang.String preload
           
protected  java.lang.String resultsLimit
           
protected  java.lang.String searchType
           
protected  java.lang.String showDownArrow
           
static java.lang.String TEMPLATE
           
protected  java.lang.String templateCssPath
           
protected  java.lang.String transport
           
protected  java.lang.String valueNotifyTopics
           
 
Fields inherited from class org.apache.struts2.components.ComboBox
emptyOption, headerKey, headerValue, list, listKey, listValue
 
Fields inherited from class org.apache.struts2.components.TextField
maxlength, readonly, size
 
Fields inherited from class org.apache.struts2.components.UIBean
accesskey, cssClass, cssErrorClass, cssErrorStyle, cssStyle, defaultTemplateDir, defaultUITheme, dynamicAttributes, id, javascriptTooltip, key, label, labelPosition, labelSeparator, name, onblur, onchange, onclick, ondblclick, onfocus, onkeydown, onkeypress, onkeyup, onmousedown, onmousemove, onmouseout, onmouseover, onmouseup, onselect, request, required, requiredposition, response, tabindex, template, templateDir, templateEngineManager, templateSuffix, theme, title, tooltip, tooltipConfig, tooltipCssClass, tooltipDelay, tooltipIconPath, value
 
Fields inherited from class org.apache.struts2.components.Component
actionMapper, COMPONENT_STACK, parameters, stack, throwExceptionOnELFailure
 
Constructor Summary
Autocompleter(ValueStack stack, javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response)
           
 
Method Summary
 void evaluateExtraParams()
           
protected  java.lang.Object findListValue()
           
 java.lang.String getComponentName()
           
protected  java.lang.String getDefaultTemplate()
           
 java.lang.String getTheme()
           
 void setAfterNotifyTopics(java.lang.String afterNotifyTopics)
           
 void setAutoComplete(java.lang.String autoComplete)
           
 void setBeforeNotifyTopics(java.lang.String beforeNotifyTopics)
           
 void setCssClass(java.lang.String cssClass)
           
 void setCssStyle(java.lang.String cssStyle)
           
 void setDataFieldName(java.lang.String dataFieldName)
           
 void setDelay(java.lang.String searchDelay)
           
 void setDisabled(java.lang.String disabled)
           
 void setDropdownHeight(java.lang.String height)
           
 void setDropdownWidth(java.lang.String width)
           
 void setErrorNotifyTopics(java.lang.String errorNotifyTopics)
           
 void setForceValidOption(java.lang.String forceValidOption)
           
 void setFormFilter(java.lang.String formFilter)
           
 void setFormId(java.lang.String formId)
           
 void setHref(java.lang.String href)
           
 void setIconPath(java.lang.String iconPath)
           
 void setId(java.lang.String id)
           
 void setIndicator(java.lang.String indicator)
           
 void setKeyName(java.lang.String keyName)
           
 void setKeyValue(java.lang.String keyValue)
           
 void setList(java.lang.String list)
           
 void setListenTopics(java.lang.String listenTopics)
           
 void setLoadMinimumCount(java.lang.String loadMinimumCount)
           
 void setLoadOnTextChange(java.lang.String loadOnType)
           
 void setName(java.lang.String name)
           
 void setNotifyTopics(java.lang.String onValueChangedPublishTopic)
           
 void setPreload(java.lang.String preload)
           
 void setResultsLimit(java.lang.String resultsLimit)
           
 void setSearchType(java.lang.String searchType)
           
 void setShowDownArrow(java.lang.String showDownArrow)
           
 void setTemplateCssPath(java.lang.String templateCssPath)
           
 void setTheme(java.lang.String theme)
           
 void setTransport(java.lang.String transport)
           
 void setValue(java.lang.String arg0)
           
 void setValueNotifyTopics(java.lang.String valueNotifyTopics)
           
 
Methods inherited from class org.apache.struts2.components.ComboBox
setEmptyOption, setHeaderKey, setHeaderValue, setListKey, setListValue
 
Methods inherited from class org.apache.struts2.components.TextField
setMaxlength, setMaxLength, setReadonly, setSize
 
Methods inherited from class org.apache.struts2.components.UIBean
addFormParameter, buildTemplateName, enableAncestorFormCustomOnsubmit, end, ensureAttributeSafelyNotEscaped, escape, evaluateNameValue, evaluateParams, getId, getTemplate, getTemplateDir, getTooltipConfig, getValueClassType, mergeTemplate, populateComponentHtmlId, setAccesskey, setCssErrorClass, setCssErrorStyle, setDefaultTemplateDir, setDefaultUITheme, setDynamicAttributes, setJavascriptTooltip, setKey, setLabel, setLabelposition, setLabelSeparator, setOnblur, setOnchange, setOnclick, setOndblclick, setOnfocus, setOnkeydown, setOnkeypress, setOnkeyup, setOnmousedown, setOnmousemove, setOnmouseout, setOnmouseover, setOnmouseup, setOnselect, setRequired, setRequiredposition, setTabindex, setTemplate, setTemplateDir, setTemplateEngineManager, setTitle, setTooltip, setTooltipConfig, setTooltipCssClass, setTooltipDelay, setTooltipIconPath
 
Methods inherited from class org.apache.struts2.components.Component
addAllParameters, addParameter, altSyntax, altSyntax, completeExpressionIfAltSyntax, copyParams, determineActionURL, determineNamespace, end, fieldError, findAncestor, findString, findString, findStringIfAltSyntax, findValue, findValue, findValue, getComponentStack, getParameters, getStack, popComponentStack, setActionMapper, setThrowExceptionsOnELFailure, start, stripExpressionIfAltSyntax, stripExpressionIfAltSyntax, toString, usesBody
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

TEMPLATE

public static final java.lang.String TEMPLATE
See Also:
Constant Field Values

forceValidOption

protected java.lang.String forceValidOption

searchType

protected java.lang.String searchType

autoComplete

protected java.lang.String autoComplete

delay

protected java.lang.String delay

disabled

protected java.lang.String disabled

href

protected java.lang.String href

dropdownWidth

protected java.lang.String dropdownWidth

dropdownHeight

protected java.lang.String dropdownHeight

formId

protected java.lang.String formId

formFilter

protected java.lang.String formFilter

listenTopics

protected java.lang.String listenTopics

notifyTopics

protected java.lang.String notifyTopics

indicator

protected java.lang.String indicator

loadOnTextChange

protected java.lang.String loadOnTextChange

loadMinimumCount

protected java.lang.String loadMinimumCount

showDownArrow

protected java.lang.String showDownArrow

templateCssPath

protected java.lang.String templateCssPath

iconPath

protected java.lang.String iconPath

keyName

protected java.lang.String keyName

dataFieldName

protected java.lang.String dataFieldName

beforeNotifyTopics

protected java.lang.String beforeNotifyTopics

afterNotifyTopics

protected java.lang.String afterNotifyTopics

errorNotifyTopics

protected java.lang.String errorNotifyTopics

valueNotifyTopics

protected java.lang.String valueNotifyTopics

resultsLimit

protected java.lang.String resultsLimit

transport

protected java.lang.String transport

preload

protected java.lang.String preload

keyValue

protected java.lang.String keyValue
Constructor Detail

Autocompleter

public Autocompleter(ValueStack stack,
                     javax.servlet.http.HttpServletRequest request,
                     javax.servlet.http.HttpServletResponse response)
Method Detail

getDefaultTemplate

protected java.lang.String getDefaultTemplate()
Overrides:
getDefaultTemplate in class ComboBox

getComponentName

public java.lang.String getComponentName()

evaluateExtraParams

public void evaluateExtraParams()
Overrides:
evaluateExtraParams in class ComboBox

setTheme

public void setTheme(java.lang.String theme)
Overrides:
setTheme in class UIBean

getTheme

public java.lang.String getTheme()
Overrides:
getTheme in class UIBean

findListValue

protected java.lang.Object findListValue()
Overrides:
findListValue in class ComboBox

setAutoComplete

public void setAutoComplete(java.lang.String autoComplete)

setDisabled

public void setDisabled(java.lang.String disabled)
Overrides:
setDisabled in class UIBean

setForceValidOption

public void setForceValidOption(java.lang.String forceValidOption)

setHref

public void setHref(java.lang.String href)

setDelay

public void setDelay(java.lang.String searchDelay)

setSearchType

public void setSearchType(java.lang.String searchType)

setDropdownHeight

public void setDropdownHeight(java.lang.String height)

setDropdownWidth

public void setDropdownWidth(java.lang.String width)

setFormFilter

public void setFormFilter(java.lang.String formFilter)

setFormId

public void setFormId(java.lang.String formId)

setListenTopics

public void setListenTopics(java.lang.String listenTopics)

setNotifyTopics

public void setNotifyTopics(java.lang.String onValueChangedPublishTopic)

setIndicator

public void setIndicator(java.lang.String indicator)

setLoadMinimumCount

public void setLoadMinimumCount(java.lang.String loadMinimumCount)

setLoadOnTextChange

public void setLoadOnTextChange(java.lang.String loadOnType)

setShowDownArrow

public void setShowDownArrow(java.lang.String showDownArrow)

setList

public void setList(java.lang.String list)
Overrides:
setList in class ComboBox

setTemplateCssPath

public void setTemplateCssPath(java.lang.String templateCssPath)

setIconPath

public void setIconPath(java.lang.String iconPath)

setKeyName

public void setKeyName(java.lang.String keyName)

setDataFieldName

public void setDataFieldName(java.lang.String dataFieldName)

setCssClass

public void setCssClass(java.lang.String cssClass)
Overrides:
setCssClass in class UIBean

setCssStyle

public void setCssStyle(java.lang.String cssStyle)
Overrides:
setCssStyle in class UIBean

setId

public void setId(java.lang.String id)
Overrides:
setId in class UIBean

setName

public void setName(java.lang.String name)
Overrides:
setName in class UIBean

setValue

public void setValue(java.lang.String arg0)
Overrides:
setValue in class UIBean

setAfterNotifyTopics

public void setAfterNotifyTopics(java.lang.String afterNotifyTopics)

setBeforeNotifyTopics

public void setBeforeNotifyTopics(java.lang.String beforeNotifyTopics)

setErrorNotifyTopics

public void setErrorNotifyTopics(java.lang.String errorNotifyTopics)

setValueNotifyTopics

public void setValueNotifyTopics(java.lang.String valueNotifyTopics)

setResultsLimit

public void setResultsLimit(java.lang.String resultsLimit)

setTransport

public void setTransport(java.lang.String transport)

setPreload

public void setPreload(java.lang.String preload)

setKeyValue

public void setKeyValue(java.lang.String keyValue)


Copyright © 2000-2011 Apache Software Foundation. All Rights Reserved.