mirror of
https://github.com/apache/struts.git
synced 2026-08-07 07:37:20 +00:00
WW-1975 Autocompleter w/loadMinimumCount ask for data on loading page
* Add "preload" attribute, which default to true (like in the div tag), which will prevent the autocompleter from loading its options when page is loaded git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@545001 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
@@ -252,6 +252,7 @@ public class Autocompleter extends ComboBox {
|
||||
protected String valueNotifyTopics;
|
||||
protected String resultsLimit;
|
||||
protected String transport;
|
||||
protected String preload;
|
||||
|
||||
public Autocompleter(ValueStack stack, HttpServletRequest request,
|
||||
HttpServletResponse response) {
|
||||
@@ -324,6 +325,8 @@ public class Autocompleter extends ComboBox {
|
||||
}
|
||||
if (transport != null)
|
||||
addParameter("transport", findString(transport));
|
||||
if (preload != null)
|
||||
addParameter("preload", findValue(preload, Boolean.class));
|
||||
|
||||
String keyNameExpr = "%{" + keyName + "}";
|
||||
addParameter("key", findString(keyNameExpr));
|
||||
@@ -516,4 +519,9 @@ public class Autocompleter extends ComboBox {
|
||||
public void setTransport(String transport) {
|
||||
this.transport = transport;
|
||||
}
|
||||
|
||||
@StrutsTagAttribute(description="Load options when page is loaded", type="Boolean", defaultValue="true")
|
||||
public void setPreload(String preload) {
|
||||
this.preload = preload;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -61,6 +61,7 @@ public class AutocompleterTag extends ComboBoxTag {
|
||||
protected String valueNotifyTopics;
|
||||
protected String resultsLimit;
|
||||
protected String transport;
|
||||
protected String preload;
|
||||
|
||||
public Component getBean(ValueStack stack, HttpServletRequest req, HttpServletResponse res) {
|
||||
return new Autocompleter(stack, req, res);
|
||||
@@ -96,6 +97,7 @@ public class AutocompleterTag extends ComboBoxTag {
|
||||
autocompleter.setValueNotifyTopics(valueNotifyTopics);
|
||||
autocompleter.setResultsLimit(resultsLimit);
|
||||
autocompleter.setTransport(transport);
|
||||
autocompleter.setPreload(preload);
|
||||
}
|
||||
|
||||
public void setAutoComplete(String autoComplete) {
|
||||
@@ -205,4 +207,8 @@ public class AutocompleterTag extends ComboBoxTag {
|
||||
public void setTransport(String transport) {
|
||||
this.transport = transport;
|
||||
}
|
||||
|
||||
public void setPreload(String preload) {
|
||||
this.preload = preload;
|
||||
}
|
||||
}
|
||||
|
||||
+4
-1
@@ -184,7 +184,7 @@ struts.widget.ComboBoxDataProvider = function(combobox, node){
|
||||
};
|
||||
|
||||
|
||||
if(!dojo.string.isBlank(this.cbox.dataUrl)){
|
||||
if(!dojo.string.isBlank(this.cbox.dataUrl) && this.cbox.preload){
|
||||
this.getData(this.cbox.dataUrl);
|
||||
} else {
|
||||
// check to see if we can populate the list from <option> elements
|
||||
@@ -255,6 +255,9 @@ dojo.widget.defineWidget(
|
||||
|
||||
transport : "",
|
||||
|
||||
//load options when page loads
|
||||
preload : true,
|
||||
|
||||
//from Dojo's ComboBox
|
||||
showResultList: function() {
|
||||
// Our dear friend IE doesnt take max-height so we need to calculate that on our own every time
|
||||
|
||||
@@ -14982,7 +14982,7 @@ this.data[i]=[_c79,_c79];
|
||||
}
|
||||
}
|
||||
};
|
||||
if(!dojo.string.isBlank(this.cbox.dataUrl)){
|
||||
if(!dojo.string.isBlank(this.cbox.dataUrl)&&this.cbox.preload){
|
||||
this.getData(this.cbox.dataUrl);
|
||||
}else{
|
||||
if((node)&&(node.nodeName.toLowerCase()=="select")){
|
||||
@@ -15001,7 +15001,7 @@ this.setData(data);
|
||||
}
|
||||
}
|
||||
};
|
||||
dojo.widget.defineWidget("struts.widget.ComboBox",dojo.widget.ComboBox,{widgetType:"ComboBox",dropdownHeight:120,dropdownWidth:0,itemHeight:0,listenTopics:"",notifyTopics:"",notifyTopicsArray:null,beforeNotifyTopics:"",beforeNotifyTopicsArray:null,afterNotifyTopics:"",afterNotifyTopicsArray:null,errorNotifyTopics:"",errorNotifyTopicsArray:null,valueNotifyTopics:"",valueNotifyTopicsArray:null,indicator:"",formId:"",formFilter:"",dataProviderClass:"struts.widget.ComboBoxDataProvider",loadOnType:false,loadMinimum:3,initialValue:"",initialKey:"",visibleDownArrow:true,fadeTime:100,searchType:"STARTSTRING",dataFieldName:"",keyName:"",templateCssString:null,templateCssString:".dojoComboBoxOuter {\n\tborder: 0px !important;\n\tmargin: 0px !important;\n\tpadding: 0px !important;\n\tbackground: transparent !important;\n\twhite-space: nowrap !important;\n}\n\n.dojoComboBox {\n\tborder: 1px inset #afafaf;\n\tmargin: 0px;\n\tpadding: 0px;\n\tvertical-align: middle !important;\n\tfloat: none !important;\n\tposition: static !important;\n\tdisplay: inline;\n}\n\n/* the input box */\ninput.dojoComboBox {\n\tborder-right-width: 1px !important;\n\tmargin-right: 0px !important;\n\tpadding-right: 0px !important;\n}\n\n/* the down arrow */\nimg.dojoComboBox {\n\tborder-left-width: 0px !important;\n\tpadding-left: 0px !important;\n\tmargin-left: 0px !important;\n}\n\n/* IE vertical-alignment calculations can be off by +-1 but these margins are collapsed away */\n.dj_ie img.dojoComboBox {\n\tmargin-top: 1px;\n\tmargin-bottom: 1px;\n}\n\n/* the drop down */\n.dojoComboBoxOptions {\n\tfont-family: Verdana, Helvetica, Garamond, sans-serif;\n\t/* font-size: 0.7em; */\n\tbackground-color: white;\n\tborder: 1px solid #afafaf;\n\tposition: absolute;\n\tz-index: 1000;\n\toverflow: auto;\n\tcursor: default;\n}\n\n.dojoComboBoxItem {\n\tpadding-left: 2px;\n\tpadding-top: 2px;\n\tmargin: 0px;\n}\n\n.dojoComboBoxItemEven {\n\tbackground-color: #f4f4f4;\n}\n\n.dojoComboBoxItemOdd {\n\tbackground-color: white;\n}\n\n.dojoComboBoxItemHighlight {\n\tbackground-color: #63709A;\n\tcolor: white;\n}\n",templateCssPath:dojo.uri.dojoUri("struts/ComboBox.css"),searchLimit:30,transport:"",showResultList:function(){
|
||||
dojo.widget.defineWidget("struts.widget.ComboBox",dojo.widget.ComboBox,{widgetType:"ComboBox",dropdownHeight:120,dropdownWidth:0,itemHeight:0,listenTopics:"",notifyTopics:"",notifyTopicsArray:null,beforeNotifyTopics:"",beforeNotifyTopicsArray:null,afterNotifyTopics:"",afterNotifyTopicsArray:null,errorNotifyTopics:"",errorNotifyTopicsArray:null,valueNotifyTopics:"",valueNotifyTopicsArray:null,indicator:"",formId:"",formFilter:"",dataProviderClass:"struts.widget.ComboBoxDataProvider",loadOnType:false,loadMinimum:3,initialValue:"",initialKey:"",visibleDownArrow:true,fadeTime:100,searchType:"STARTSTRING",dataFieldName:"",keyName:"",templateCssString:null,templateCssString:".dojoComboBoxOuter {\n\tborder: 0px !important;\n\tmargin: 0px !important;\n\tpadding: 0px !important;\n\tbackground: transparent !important;\n\twhite-space: nowrap !important;\n}\n\n.dojoComboBox {\n\tborder: 1px inset #afafaf;\n\tmargin: 0px;\n\tpadding: 0px;\n\tvertical-align: middle !important;\n\tfloat: none !important;\n\tposition: static !important;\n\tdisplay: inline;\n}\n\n/* the input box */\ninput.dojoComboBox {\n\tborder-right-width: 1px !important;\n\tmargin-right: 0px !important;\n\tpadding-right: 0px !important;\n}\n\n/* the down arrow */\nimg.dojoComboBox {\n\tborder-left-width: 0px !important;\n\tpadding-left: 0px !important;\n\tmargin-left: 0px !important;\n}\n\n/* IE vertical-alignment calculations can be off by +-1 but these margins are collapsed away */\n.dj_ie img.dojoComboBox {\n\tmargin-top: 1px;\n\tmargin-bottom: 1px;\n}\n\n/* the drop down */\n.dojoComboBoxOptions {\n\tfont-family: Verdana, Helvetica, Garamond, sans-serif;\n\t/* font-size: 0.7em; */\n\tbackground-color: white;\n\tborder: 1px solid #afafaf;\n\tposition: absolute;\n\tz-index: 1000;\n\toverflow: auto;\n\tcursor: default;\n}\n\n.dojoComboBoxItem {\n\tpadding-left: 2px;\n\tpadding-top: 2px;\n\tmargin: 0px;\n}\n\n.dojoComboBoxItemEven {\n\tbackground-color: #f4f4f4;\n}\n\n.dojoComboBoxItemOdd {\n\tbackground-color: white;\n}\n\n.dojoComboBoxItemHighlight {\n\tbackground-color: #63709A;\n\tcolor: white;\n}\n",templateCssPath:dojo.uri.dojoUri("struts/ComboBox.css"),searchLimit:30,transport:"",preload:true,showResultList:function(){
|
||||
var _c80=this.optionsListNode.childNodes;
|
||||
if(_c80.length){
|
||||
this.optionsListNode.style.width=this.dropdownWidth===0?(dojo.html.getMarginBox(this.domNode).width-2)+"px":this.dropdownWidth+"px";
|
||||
|
||||
+4
-1
@@ -24312,7 +24312,7 @@ struts.widget.ComboBoxDataProvider = function(combobox, node){
|
||||
};
|
||||
|
||||
|
||||
if(!dojo.string.isBlank(this.cbox.dataUrl)){
|
||||
if(!dojo.string.isBlank(this.cbox.dataUrl) && this.cbox.preload){
|
||||
this.getData(this.cbox.dataUrl);
|
||||
} else {
|
||||
// check to see if we can populate the list from <option> elements
|
||||
@@ -24383,6 +24383,9 @@ dojo.widget.defineWidget(
|
||||
|
||||
transport : "",
|
||||
|
||||
//load options when page loads
|
||||
preload : true,
|
||||
|
||||
//from Dojo's ComboBox
|
||||
showResultList: function() {
|
||||
// Our dear friend IE doesnt take max-height so we need to calculate that on our own every time
|
||||
|
||||
@@ -110,6 +110,9 @@
|
||||
<#if parameters.transport?if_exists != "">
|
||||
transport="${parameters.transport?html}"<#rt/>
|
||||
</#if>
|
||||
<#if parameters.preload?exists>
|
||||
preload="${parameters.preload?string?html}"<#rt/>
|
||||
</#if>
|
||||
<#include "/${parameters.templateDir}/simple/scripting-events.ftl" />
|
||||
<#include "/${parameters.templateDir}/simple/common-attributes.ftl" />
|
||||
<#if parameters.href?exists>
|
||||
|
||||
@@ -50,6 +50,7 @@ public class AutocompleterTest extends AbstractUITagTest {
|
||||
tag.setValueNotifyTopics("l");
|
||||
tag.setResultsLimit("2");
|
||||
tag.setTransport("m");
|
||||
tag.setPreload("true");
|
||||
tag.doStartTag();
|
||||
tag.doEndTag();
|
||||
|
||||
|
||||
+1
@@ -21,4 +21,5 @@
|
||||
dataFieldName="k"
|
||||
searchLimit="2"
|
||||
transport="m"
|
||||
preload="true"
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user