[JBoss JIRA] (RF-13458) CommandLink Javassist Compatibility Failures (richfaces-5.0.0.Alpha2)
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/RF-13458?page=com.atlassian.jira.plugin.s... ]
Lukáš Fryč commented on RF-13458:
---------------------------------
The question is against which version you have reproduced a regression. What is a last version it works with?
> CommandLink Javassist Compatibility Failures (richfaces-5.0.0.Alpha2)
> ---------------------------------------------------------------------
>
> Key: RF-13458
> URL: https://issues.jboss.org/browse/RF-13458
> Project: RichFaces
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Reporter: Steven W.
>
> There appear to be compatibility issues with the richfaces-5.0.0.Alpha2 release and the javassist package. Using older versions of the package lead to failures stating that new javassist methods are not available.
> When using the newer libraries (3.14 -> javassist-3.18.0-GA) exceptions are generated on the use of previously functioning command links (the corresponding methods are still the same signatures i.e. return String and take no parameters)
> {code}
> <rich:commandLink id="listByUnit" render="f_home,f_selections,g_body_wrapper"
> value="#{messages['listByUnit']}"
> title="#{messages['titleListByUnit']}"
> action="#{appController.selectCurrSelectionUnit}"/>
> {code}
> with
> {code}
> public String selectCurrSelectionUnit()
> {code}
> yields:
> {code}
> 2014-01-03 13:57:57,597 ERROR [org.jboss.seam.exception.Exceptions] - handled and logged exception
> javax.servlet.ServletException: /layout/controller-selections.xhtml: Property 'selectCurrSelectionUnit' not found on type com.integrits.bean.Controller_$$_javassist_seam_2
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:374)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
> at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
> at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
> at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
> at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
> at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
> at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
> at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
> at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
> at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
> at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
> at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
> at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
> at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
> at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
> at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1008)
> at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
> at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> at java.lang.Thread.run(Thread.java:619)
> Caused by: javax.el.ELException: /layout/controller-selections.xhtml: Property 'selectCurrSelectionUnit' not found on type com.integrits.bean.Controller_$$_javassist_seam_2
> at com.sun.faces.facelets.compiler.AttributeInstruction.write(AttributeInstruction.java:94)
> at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
> at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:207)
> at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
> at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
> at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
> at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
> at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
> at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
> at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
> at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
> at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:847)
> at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1819)
> at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1822)
> at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:447)
> at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
> at org.jboss.seam.jsf.SeamViewHandler.renderView(SeamViewHandler.java:188)
> at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:286)
> at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
> at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
> at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
> ... 33 more
> {code}
--
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
10 years, 11 months
[JBoss JIRA] (RF-13455) The rich:tabPanel no longer visits tab header facets while rendering a response.
by Brian Leathem (JIRA)
[ https://issues.jboss.org/browse/RF-13455?page=com.atlassian.jira.plugin.s... ]
Brian Leathem commented on RF-13455:
------------------------------------
{quote}
1) I don't like a fact that #visitTree is copied, but without common ancestor we have only option - delegate to static implementation, that isn't clean as well.
{quote}
we can't do a static visit tree as we then can't execute the protected methods
{quote}
2) I might have found one issue: https://github.com/richfaces/richfaces/pull/72/files#r8687561
{quote}
replied:
https://github.com/richfaces/richfaces/pull/72/files#r8696091
> The rich:tabPanel no longer visits tab header facets while rendering a response.
> --------------------------------------------------------------------------------
>
> Key: RF-13455
> URL: https://issues.jboss.org/browse/RF-13455
> Project: RichFaces
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: component-panels-layout-themes
> Affects Versions: 4.3.4
> Environment: java 7,
> tomcat 7, JBoss AS,
> mojarra, myfaces
> chrome, firefox
> Reporter: Alexey Shakov
> Assignee: Brian Leathem
> Labels: regression
> Fix For: 4.3.5, 4.5.0.Alpha2, 5.0.0.Alpha3
>
> Original Estimate: 2 hours
> Remaining Estimate: 2 hours
>
> I use ajax to update the header label of rich:tab. That is why label is placed in a header-facet. Since RF 4.3.4 this does not work:
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html"
> xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:rich="http://richfaces.org/rich" xmlns:a4j="http://richfaces.org/a4j"
> xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en">
> <h:head>
> </h:head>
> <h:body>
>
> <a4j:log hotkey="M" mode="popup" />
> <h:form id="form" prependId="false">
> <rich:tabPanel id="tabPanel">
> <rich:tab header="tab 1">
> <a4j:commandLink value="click me" action="#{testBean.put('clicks',testBean.clicks + 1)}" render="label" execute="@this" />
> </rich:tab>
> <rich:tab>
> <f:facet name="header">
> <h:outputText id="label" value="#{testBean.clicks} clicks" />
> </f:facet>
> </rich:tab>
> </rich:tabPanel>
> </h:form>
> </h:body>
> </html>
> {code}
> testBean is a simple session-scoped HashMap.
--
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
10 years, 11 months
[JBoss JIRA] (RF-13208) Push: error "not well-formed" appears in browser console in Firefox
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/RF-13208?page=com.atlassian.jira.plugin.s... ]
Lukáš Fryč updated RF-13208:
----------------------------
Original Estimate: 1 hour
Remaining Estimate: 1 hour
> Push: error "not well-formed" appears in browser console in Firefox
> -------------------------------------------------------------------
>
> Key: RF-13208
> URL: https://issues.jboss.org/browse/RF-13208
> Project: RichFaces
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: component-a4j-core
> Affects Versions: 4.3.4
> Environment: RichFaces 4.3.4.Final
> Metamer 4.3.4.20130919-Final
> Mojarra 2.1.19
> EAP 6.1.1
> OpenJDK Runtime Environment 1.7.0_40-mockbuild_2013_09_19_20_10-b00 @ Linux
> Firefox 24.0 @ Linux x86_64
> Reporter: Pavol Pitonak
> Assignee: Lukáš Fryč
> Fix For: 4.3.5, 5.0.0.Alpha3
>
> Attachments: firefox_console.png
>
> Original Estimate: 1 hour
> Remaining Estimate: 1 hour
>
> # deploy Metamer and open http://127.0.0.1:8080/metamer/faces/components/a4jPush/twoPush.xhtml
> # open browser console
> # click "Push 2!" button
> result:
> * browser console contains "not well-formed" JavaScript error (see screenshot)
> * when you click on the error, you can see something like this:
> {quote}
> <"topic":"jmsSampleAddress2","data":"day: 23, month: 9, time: 11:01:12.829","number":0>
> {quote}
> * component seems to work fine despite this error
> * I couldn't see this error in Chrome 29
--
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
10 years, 11 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:
----------------------------
Original Estimate: 30 minutes
Remaining Estimate: 30 minutes
> 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č
> Fix For: 4.3.5
>
> Original Estimate: 30 minutes
> Remaining Estimate: 30 minutes
>
> 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
10 years, 11 months
[JBoss JIRA] (RF-13305) Autocomplete: i must press button twice for popup window
by Lukáš Fryč (JIRA)
[ https://issues.jboss.org/browse/RF-13305?page=com.atlassian.jira.plugin.s... ]
Lukáš Fryč updated RF-13305:
----------------------------
Original Estimate: 1 hour
Remaining Estimate: 1 hour
> Autocomplete: i must press button twice for popup window
> --------------------------------------------------------
>
> Key: RF-13305
> URL: https://issues.jboss.org/browse/RF-13305
> Project: RichFaces
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Affects Versions: 4.3.4
> Reporter: alexey plotnikov
> Assignee: Lukáš Fryč
> Fix For: 4.3.5
>
> Original Estimate: 1 hour
> Remaining Estimate: 1 hour
>
> All described here https://community.jboss.org/thread/233971
> I try repeat:
> 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 problem:
> if autocomplete.providerName not null and not empty(in rich:autocomplete) and user clicks on cancel button(img/cancel.png), then after that, if user clicks on show button(/img/arrow.png) popup not showing, user must clicks twice on this button.
> *This problem shows if i use showButton from rich:autocomplete instead my show button.*
> I think i found a solution of this problem:
> Autocomplete.js has this code:
> {code}
> var onChangeValue = function (event, value, callback) {
> selectItem.call(this, event);
>
> // value is undefined if called from AutocompleteBase onChange
> var subValue = (typeof value == "undefined") ? this.__getSubValue() : value;
> var oldValue = this.value;
> this.value = subValue;
>
> if ((this.options.isCachedAjax || !this.options.ajaxMode) &&
> this.cache && this.cache.isCached(subValue)) {
> ...
> } else {
> if (event.keyCode == rf.KEYS.RETURN || event.type == "click") {
> this.__setInputValue(subValue);
> }
> if (subValue.length >= this.options.minChars) {
> if ((this.options.ajaxMode || this.options.lazyClientMode) && oldValue != subValue) {
> callAjax.call(this, event, callback);
> }
> } else {
> if (this.options.ajaxMode) {
> clearItems.call(this);
> this.__hide(event);
> }
> }
> }
> };
> {code}
> for show popup this must be true:
> {code}
> oldValue != subValue
> {code}
> but in this part of code
> oldValue is ''(empty string) and subValue is ''(empty string),
> so this condition
> {code}
> oldValue != subValue
> {code}
> return false!
>
> i replace this code by this:
> {code}
> var onChangeValue = function (event, value, callback) {
> selectItem.call(this, event);
>
> // value is undefined if called from AutocompleteBase onChange
> var subValue = (typeof value == "undefined") ? this.__getSubValue() : value;
> var oldValue = this.value;
> this.value = subValue;
>
> if ((this.options.isCachedAjax || !this.options.ajaxMode) &&
> this.cache && this.cache.isCached(subValue)) {
> ...
> } else {
> if (event.keyCode == rf.KEYS.RETURN || event.type == "click") {
> this.__setInputValue(subValue);
> }
> if (subValue.length >= this.options.minChars) {
> if ((this.options.ajaxMode || this.options.lazyClientMode) && (oldValue != subValue || (oldValue === '' && subValue === ''))) {
> callAjax.call(this, event, callback);
> }
> } else {
> if (this.options.ajaxMode) {
> clearItems.call(this);
> this.__hide(event);
> }
> }
> }
>
> };
> {code}
> so, than oldValue='' and subValue=='' callAjax.call will be called and popup will be showing.
--
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
10 years, 11 months