[JBoss JIRA] (RF-13306) Autocomplete: initialize value from DOM (was: ignored API call .setValue(''))
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/RF-13306?page=com.atlassian.jira.plugin.s... ]
Lukáš Fryč commented on RF-13306:
---------------------------------
Considering a small scope of a fix, I suggest to include it in 4.3.5.
> Autocomplete: initialize value from DOM (was: ignored API call .setValue(''))
> -----------------------------------------------------------------------------
>
> Key: RF-13306
> URL: https://issues.jboss.org/browse/RF-13306
> Project: RichFaces
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Affects Versions: 4.3.4
> Reporter: alexey plotnikov
> Assignee: Lukáš Fryč
>
> All described here https://community.jboss.org/thread/233973
> I have this autocomplete component:
> {code}
> <table>
> <tr>
> <td>
> <rich:autocomplete mode="ajax" autocompleteMethod="#{autocomplete.autocompleteProviders}"
> minChars="0" var="s" fetchValue="#{s.realName}" id="provider-suggestion"
> autofill="false"
> onselectitem="autocompleteChangeProvider(event.target)" style="display: inline;"
> layout="table" value="#{autocomplete.providerName}" >
> <a4j:queue requestDelay="500" ignoreDupResponses="true" />
> <h:column>
> <h:outputText style="display:none;" value="#{s.id}"/>
> <h:outputText style="display:none;" value="#{s.realName}"/>
> </h:column>
> <h:column>
> <h:outputText value="#{s.name}" escape="false"/>
> </h:column>
> </rich:autocomplete>
> </td>
> <td>
> <h:graphicImage value="/img/arrow.png" onclick="#{rich:component('provider-suggestion')}.setValue('');#{rich:component('provider-suggestion')}.showPopup();stopEvent(event);"
> alt=""/>
> <h:graphicImage value="/img/cancel.png"
> onclick="#{rich:component('provider-suggestion')}.hidePopup();#{rich:component('provider-suggestion')}.setValue('');autocompleteChangeProvider(null);"
> alt="#{messages['pages.clear']}" title="#{messages['pages.clear']}"/>
> <h:inputHidden id="filter-provider-id" value="#{autocomplete.providerId}"/>
> </td>
> </tr>
> </table>
> {code}
> as you can see, i don't use showButton="true", because i need another functionality, i need erase input text before show popup window.
> I use JavaScript function "autocompleteChangeProvider" for extract selected id.
> I use separate button(/img/cancel.png) for erase input text, as you can see this function just use Richfaces API.
>
> And a problem:
> if autocomplete.providerName not null and not empty(in rich:autocomplete) and user clicks on show button(/img/arrow.png) than input text not erasing, but i called #{rich:component('provider-suggestion')}.setValue('') !!!
>
> I think i found a solution
> AutocompleteBase.js has this code:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {
> // call constructor of parent class
> $super.constructor.call(this, componentId);
> this.selectId = selectId;
> this.fieldId = fieldId;
> this.options = $.extend({}, defaultOptions, options);
> this.namespace = this.namespace || "." + rf.Event.createNamespace(this.name, this.selectId);
> this.currentValue = "";
> this.tempValue = this.getValue();
> this.isChanged = this.tempValue.length != 0;
> bindEventHandlers.call(this);
> };
> {code}
> as you can see this.currentValue = "" so JS thinks that this.currentValue="" so currentValue equal new value("" - empty string), so nothing happens.
> i replace this code by this:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {
> // call constructor of parent class
> $super.constructor.call(this, componentId);
> this.selectId = selectId;
> this.fieldId = fieldId;
> this.options = $.extend({}, defaultOptions, options);
> this.namespace = this.namespace || "." + rf.Event.createNamespace(this.name, this.selectId);
> this.currentValue = $(rf.getDomElement(fieldId)).val();
> this.tempValue = this.getValue();
> this.isChanged = this.tempValue.length != 0;
> bindEventHandlers.call(this);
> };
> {code}
> and it works!
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 4 months
[JBoss JIRA] (RF-13306) Autocomplete: initialize value from DOM (was: ignored API call .setValue(''))
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/RF-13306?page=com.atlassian.jira.plugin.s... ]
Lukáš Fryč edited comment on RF-13306 at 11/12/13 4:39 AM:
-----------------------------------------------------------
The patch looks good, we may consider using one of Autocomplete methods to set the value, but generally initializing the field from the DOM is a right fix.
Btw the issue with {{setValue}} is here:
https://github.com/richfaces4/components/blob/master/input/ui/src/main/re...
was (Author: lfryc):
The patch looks good, we may consider using one of Autocomplete methods to set the value, but generally initializing the field from the DOM is a right fix.
> Autocomplete: initialize value from DOM (was: ignored API call .setValue(''))
> -----------------------------------------------------------------------------
>
> Key: RF-13306
> URL: https://issues.jboss.org/browse/RF-13306
> Project: RichFaces
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Affects Versions: 4.3.4
> Reporter: alexey plotnikov
> Assignee: Lukáš Fryč
>
> All described here https://community.jboss.org/thread/233973
> I have this autocomplete component:
> {code}
> <table>
> <tr>
> <td>
> <rich:autocomplete mode="ajax" autocompleteMethod="#{autocomplete.autocompleteProviders}"
> minChars="0" var="s" fetchValue="#{s.realName}" id="provider-suggestion"
> autofill="false"
> onselectitem="autocompleteChangeProvider(event.target)" style="display: inline;"
> layout="table" value="#{autocomplete.providerName}" >
> <a4j:queue requestDelay="500" ignoreDupResponses="true" />
> <h:column>
> <h:outputText style="display:none;" value="#{s.id}"/>
> <h:outputText style="display:none;" value="#{s.realName}"/>
> </h:column>
> <h:column>
> <h:outputText value="#{s.name}" escape="false"/>
> </h:column>
> </rich:autocomplete>
> </td>
> <td>
> <h:graphicImage value="/img/arrow.png" onclick="#{rich:component('provider-suggestion')}.setValue('');#{rich:component('provider-suggestion')}.showPopup();stopEvent(event);"
> alt=""/>
> <h:graphicImage value="/img/cancel.png"
> onclick="#{rich:component('provider-suggestion')}.hidePopup();#{rich:component('provider-suggestion')}.setValue('');autocompleteChangeProvider(null);"
> alt="#{messages['pages.clear']}" title="#{messages['pages.clear']}"/>
> <h:inputHidden id="filter-provider-id" value="#{autocomplete.providerId}"/>
> </td>
> </tr>
> </table>
> {code}
> as you can see, i don't use showButton="true", because i need another functionality, i need erase input text before show popup window.
> I use JavaScript function "autocompleteChangeProvider" for extract selected id.
> I use separate button(/img/cancel.png) for erase input text, as you can see this function just use Richfaces API.
>
> And a problem:
> if autocomplete.providerName not null and not empty(in rich:autocomplete) and user clicks on show button(/img/arrow.png) than input text not erasing, but i called #{rich:component('provider-suggestion')}.setValue('') !!!
>
> I think i found a solution
> AutocompleteBase.js has this code:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {
> // call constructor of parent class
> $super.constructor.call(this, componentId);
> this.selectId = selectId;
> this.fieldId = fieldId;
> this.options = $.extend({}, defaultOptions, options);
> this.namespace = this.namespace || "." + rf.Event.createNamespace(this.name, this.selectId);
> this.currentValue = "";
> this.tempValue = this.getValue();
> this.isChanged = this.tempValue.length != 0;
> bindEventHandlers.call(this);
> };
> {code}
> as you can see this.currentValue = "" so JS thinks that this.currentValue="" so currentValue equal new value("" - empty string), so nothing happens.
> i replace this code by this:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {
> // call constructor of parent class
> $super.constructor.call(this, componentId);
> this.selectId = selectId;
> this.fieldId = fieldId;
> this.options = $.extend({}, defaultOptions, options);
> this.namespace = this.namespace || "." + rf.Event.createNamespace(this.name, this.selectId);
> this.currentValue = $(rf.getDomElement(fieldId)).val();
> this.tempValue = this.getValue();
> this.isChanged = this.tempValue.length != 0;
> bindEventHandlers.call(this);
> };
> {code}
> and it works!
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 4 months
[JBoss JIRA] (RF-13306) Autocomplete: initialize value from DOM (was: ignored API call .setValue(''))
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/RF-13306?page=com.atlassian.jira.plugin.s... ]
Lukáš Fryč updated RF-13306:
----------------------------
Summary: Autocomplete: initialize value from DOM (was: ignored API call .setValue('')) (was: Autocomplete: ignored API call .setValue(''))
> Autocomplete: initialize value from DOM (was: ignored API call .setValue(''))
> -----------------------------------------------------------------------------
>
> Key: RF-13306
> URL: https://issues.jboss.org/browse/RF-13306
> Project: RichFaces
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Affects Versions: 4.3.4
> Reporter: alexey plotnikov
> Assignee: Lukáš Fryč
>
> All described here https://community.jboss.org/thread/233973
> I have this autocomplete component:
> {code}
> <table>
> <tr>
> <td>
> <rich:autocomplete mode="ajax" autocompleteMethod="#{autocomplete.autocompleteProviders}"
> minChars="0" var="s" fetchValue="#{s.realName}" id="provider-suggestion"
> autofill="false"
> onselectitem="autocompleteChangeProvider(event.target)" style="display: inline;"
> layout="table" value="#{autocomplete.providerName}" >
> <a4j:queue requestDelay="500" ignoreDupResponses="true" />
> <h:column>
> <h:outputText style="display:none;" value="#{s.id}"/>
> <h:outputText style="display:none;" value="#{s.realName}"/>
> </h:column>
> <h:column>
> <h:outputText value="#{s.name}" escape="false"/>
> </h:column>
> </rich:autocomplete>
> </td>
> <td>
> <h:graphicImage value="/img/arrow.png" onclick="#{rich:component('provider-suggestion')}.setValue('');#{rich:component('provider-suggestion')}.showPopup();stopEvent(event);"
> alt=""/>
> <h:graphicImage value="/img/cancel.png"
> onclick="#{rich:component('provider-suggestion')}.hidePopup();#{rich:component('provider-suggestion')}.setValue('');autocompleteChangeProvider(null);"
> alt="#{messages['pages.clear']}" title="#{messages['pages.clear']}"/>
> <h:inputHidden id="filter-provider-id" value="#{autocomplete.providerId}"/>
> </td>
> </tr>
> </table>
> {code}
> as you can see, i don't use showButton="true", because i need another functionality, i need erase input text before show popup window.
> I use JavaScript function "autocompleteChangeProvider" for extract selected id.
> I use separate button(/img/cancel.png) for erase input text, as you can see this function just use Richfaces API.
>
> And a problem:
> if autocomplete.providerName not null and not empty(in rich:autocomplete) and user clicks on show button(/img/arrow.png) than input text not erasing, but i called #{rich:component('provider-suggestion')}.setValue('') !!!
>
> I think i found a solution
> AutocompleteBase.js has this code:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {
> // call constructor of parent class
> $super.constructor.call(this, componentId);
> this.selectId = selectId;
> this.fieldId = fieldId;
> this.options = $.extend({}, defaultOptions, options);
> this.namespace = this.namespace || "." + rf.Event.createNamespace(this.name, this.selectId);
> this.currentValue = "";
> this.tempValue = this.getValue();
> this.isChanged = this.tempValue.length != 0;
> bindEventHandlers.call(this);
> };
> {code}
> as you can see this.currentValue = "" so JS thinks that this.currentValue="" so currentValue equal new value("" - empty string), so nothing happens.
> i replace this code by this:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {
> // call constructor of parent class
> $super.constructor.call(this, componentId);
> this.selectId = selectId;
> this.fieldId = fieldId;
> this.options = $.extend({}, defaultOptions, options);
> this.namespace = this.namespace || "." + rf.Event.createNamespace(this.name, this.selectId);
> this.currentValue = $(rf.getDomElement(fieldId)).val();
> this.tempValue = this.getValue();
> this.isChanged = this.tempValue.length != 0;
> bindEventHandlers.call(this);
> };
> {code}
> and it works!
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 4 months
[JBoss JIRA] (RF-13306) Autocomplete: ignored API call .setValue('')
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/RF-13306?page=com.atlassian.jira.plugin.s... ]
Lukáš Fryč commented on RF-13306:
---------------------------------
The patch looks good, we may consider using one of Autocomplete methods to set the value, but generally initializing the field from the DOM is a right fix.
> Autocomplete: ignored API call .setValue('')
> --------------------------------------------
>
> Key: RF-13306
> URL: https://issues.jboss.org/browse/RF-13306
> Project: RichFaces
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Affects Versions: 4.3.4
> Reporter: alexey plotnikov
> Assignee: Lukáš Fryč
>
> All described here https://community.jboss.org/thread/233973
> I have this autocomplete component:
> {code}
> <table>
> <tr>
> <td>
> <rich:autocomplete mode="ajax" autocompleteMethod="#{autocomplete.autocompleteProviders}"
> minChars="0" var="s" fetchValue="#{s.realName}" id="provider-suggestion"
> autofill="false"
> onselectitem="autocompleteChangeProvider(event.target)" style="display: inline;"
> layout="table" value="#{autocomplete.providerName}" >
> <a4j:queue requestDelay="500" ignoreDupResponses="true" />
> <h:column>
> <h:outputText style="display:none;" value="#{s.id}"/>
> <h:outputText style="display:none;" value="#{s.realName}"/>
> </h:column>
> <h:column>
> <h:outputText value="#{s.name}" escape="false"/>
> </h:column>
> </rich:autocomplete>
> </td>
> <td>
> <h:graphicImage value="/img/arrow.png" onclick="#{rich:component('provider-suggestion')}.setValue('');#{rich:component('provider-suggestion')}.showPopup();stopEvent(event);"
> alt=""/>
> <h:graphicImage value="/img/cancel.png"
> onclick="#{rich:component('provider-suggestion')}.hidePopup();#{rich:component('provider-suggestion')}.setValue('');autocompleteChangeProvider(null);"
> alt="#{messages['pages.clear']}" title="#{messages['pages.clear']}"/>
> <h:inputHidden id="filter-provider-id" value="#{autocomplete.providerId}"/>
> </td>
> </tr>
> </table>
> {code}
> as you can see, i don't use showButton="true", because i need another functionality, i need erase input text before show popup window.
> I use JavaScript function "autocompleteChangeProvider" for extract selected id.
> I use separate button(/img/cancel.png) for erase input text, as you can see this function just use Richfaces API.
>
> And a problem:
> if autocomplete.providerName not null and not empty(in rich:autocomplete) and user clicks on show button(/img/arrow.png) than input text not erasing, but i called #{rich:component('provider-suggestion')}.setValue('') !!!
>
> I think i found a solution
> AutocompleteBase.js has this code:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {
> // call constructor of parent class
> $super.constructor.call(this, componentId);
> this.selectId = selectId;
> this.fieldId = fieldId;
> this.options = $.extend({}, defaultOptions, options);
> this.namespace = this.namespace || "." + rf.Event.createNamespace(this.name, this.selectId);
> this.currentValue = "";
> this.tempValue = this.getValue();
> this.isChanged = this.tempValue.length != 0;
> bindEventHandlers.call(this);
> };
> {code}
> as you can see this.currentValue = "" so JS thinks that this.currentValue="" so currentValue equal new value("" - empty string), so nothing happens.
> i replace this code by this:
> {code}
> rf.ui.AutocompleteBase = function(componentId, selectId, fieldId, options) {
> // call constructor of parent class
> $super.constructor.call(this, componentId);
> this.selectId = selectId;
> this.fieldId = fieldId;
> this.options = $.extend({}, defaultOptions, options);
> this.namespace = this.namespace || "." + rf.Event.createNamespace(this.name, this.selectId);
> this.currentValue = $(rf.getDomElement(fieldId)).val();
> this.tempValue = this.getValue();
> this.isChanged = this.tempValue.length != 0;
> bindEventHandlers.call(this);
> };
> {code}
> and it works!
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 4 months
[JBoss JIRA] (RF-13323) FileUploadEvent listener reset the list value with Viewscope
by Jiří Štefek (JIRA)
[ https://issues.jboss.org/browse/RF-13323?page=com.atlassian.jira.plugin.s... ]
Jiří Štefek reassigned RF-13323:
--------------------------------
Assignee: Brian Leathem (was: Jiří Štefek)
> FileUploadEvent listener reset the list value with Viewscope
> ------------------------------------------------------------
>
> Key: RF-13323
> URL: https://issues.jboss.org/browse/RF-13323
> Project: RichFaces
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: component-input
> Affects Versions: 4.3.4
> Environment: Jboss 7.1
> Richfaces 4.3.4
> JSF 2.1.9
>
> Reporter: Mohammad Weshah
> Assignee: Brian Leathem
> Labels: rich:fileUpload
> Attachments: RF-13323-SessionScoped.png, RF-13323-ViewScoped.png
>
>
> Hello All,
> i make an example of upload file from richfaces showcase it is working successfully , but i notice if i changed the backing bean to viewscope the files list inside the FileUploadEvent listener will be rest every time that i upload new file , the code as follow :
>
> {code}
> protected List<UploadedImage> files = new ArrayList<UploadedImage>();
>
> public void FileUploadlistener(FileUploadEvent event) throws Exception {
> UploadedFile item = event.getUploadedFile();
> UploadedImage file = new UploadedImage();
> file.setLength(item.getData().length);
> file.setName(item.getName());
> file.setData(item.getData());
>
> files.add(file);
> }
> {code}
>
> but when i changed the scope to session the files still contain the old files, is it mandatory to the backing be session or there is something wrong ?
>
> Regards
> Wish79
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
12 years, 4 months