[
https://issues.jboss.org/browse/RF-13645?page=com.atlassian.jira.plugin.s...
]
Juraj Húska edited comment on RF-13645 at 5/29/14 9:08 AM:
-----------------------------------------------------------
Reproduced on this example:
https://github.com/jhuska/richfaces-sanbox/tree/RF-13645
Steps to reproduce:
# clone, build and deploy example from above mentioned URL.
# load
http://localhost:8080/richfaces-sanbox/
# Two ways to break the Context menu, *first one*
## invoke context menu in the first panel, first tab on any line
## click on its only item
## see that one more line in the {{extendedDataTable}} is added, however, subsequent
{{contextMenu}} invoking does not work.
# *Second way*
## in the first panel, switch the {{tabPanel}}, and switch it back
## see that {{contextMenu}} can not be invoked anymore
## Note that adding {{contextMenu}} and {{table}} ids into the {{render}}} attribute of
{{tab}} does not help.
Note, the second panel is just informatory. It shows fixed RF-11973 4.3.5, which fixing
seems to cause this issue.
[
This|https://github.com/richfaces4/components/commit/a0c4535de18dd74fa096...]
commit.
was (Author: jhuska):
Reproduced on this example:
https://github.com/jhuska/richfaces-sanbox/tree/RF-13645
Steps to reproduce:
# clone, build and deploy example from above mentioned URL.
# load
http://localhost:8080/richfaces-sanbox/
# Two ways to break the Context menu, *first one*
## invoke context menu in the first panel, first tab on any line
## click on its only item
## see that one more line in the {{extendedDataTable}} is added, however, subsequent
{{contextMenu}} invoking does not work.
# *Second way*
## in the first panel, switch the {{tabPanel}}, and switch it back
## see that {{contextMenu}} can not be invoked anymore
## Note that adding {{contextMenu}} and {{table}} into the {{render} attribute of {{tab}}
does not help.
Note, the second panel is just informatory. It shows fixed RF-11973 4.3.5, which fixing
seems to cause this issue.
[
This|https://github.com/richfaces4/components/commit/a0c4535de18dd74fa096...]
commit.
contextMenu for extendedDataTable breaks after ajax render of
contextMenu
-------------------------------------------------------------------------
Key: RF-13645
URL:
https://issues.jboss.org/browse/RF-13645
Project: RichFaces
Issue Type: Bug
Security Level: Public(Everyone can see)
Components: component-menu
Affects Versions: 4.3.5, 4.3.6
Environment: WIN7 / JBOSS AS 7.1.1
Reporter: Steffen Michel
Assignee: Juraj Húska
Priority: Blocker
Anything that causes an ajax re-render of a contextMenu which is attached to an
extendedDataTable causes the contextMenu to subsequently be broken, triggering a
JavaScript error instead of displaying the menu. The error seems to be this:
{quote}
Cannot call method 'show' of null in menu-base.js (at line 108 there is a call to
this.popup, but popup is null)
{quote}
The reason I need to ajax re-render the context menu is because in my situtation it's
held within a tab panel, and if it doesn't get re-rendered then it stops working after
switching tabs using ajax mode (though it also breaks if the contextMenu is held outside
of the tab panel, so that isn't a potential solution).
I created a stripped down example of my specific situation, with two extended data
tables, each held in a different tab within a tab panel, and one context menu for each
table. Changing tabs will cause the context menu to break without it explicitly being
called in a render list. The same kind of break occurs if the contextMenu is called as
part of any ajax render list:
{code}
<!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:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich">
<h:head></h:head>
<h:body>
<h:form id="testForm">
<rich:tabPanel>
<rich:tab id="tab1" header="Tab 1">
<rich:extendedDataTable value="#{testBean.items}"
var="beanVar" id="table1">
<rich:column id="col1">
<h:outputText value="#{beanVar}"/>
</rich:column>
</rich:extendedDataTable>
<rich:contextMenu id="contextMenu1"
target="table1">
<rich:menuItem render="table1,contextMenu1"
mode="ajax"
actionListener="#{testBean.addItem}">Context Menu 1
Item</rich:menuItem>
</rich:contextMenu>
</rich:tab>
<rich:tab id="tab2" header="Tab 2">
<rich:extendedDataTable value="#{testBean.items}"
var="beanVar2" id="table2">
<rich:column id="col2">
<h:outputText value="#{beanVar2}"/>
</rich:column>
</rich:extendedDataTable>
<rich:contextMenu id="contextMenu2"
target="table2">
<rich:menuItem render="table2,contextMenu2"
mode="ajax"
actionListener="#{testBean.addItem}">Context Menu 2
Item</rich:menuItem>
</rich:contextMenu>
</rich:tab>
</rich:tabPanel>
</h:form>
</h:body>
</html>
{code}
And a simple test bean:
{code}
import org.apache.myfaces.extensions.cdi.core.api.scope.conversation.ViewAccessScoped;
import javax.inject.Named;
import java.io.Serializable;
import java.util.ArrayList;import java.util.List;
@Named
@ViewAccessScoped
public class TestBean implements Serializable {
List<String> items = new ArrayList<>();
public TestBean() {
items.add("one");
items.add("two");
items.add("three");
}
public void addItem(){
items.add("another");
}
public List<String> getItems() {
return items;
}
}
{code}
The above test situation works fine in richfaces 4.3.1, 4.3.2, 4.3.3 and 4.3.4, but
breaks when upgraded to 4.3.5.Final.
There was a different bug fixed in 4.3.5 which seems highly related to this, but
opposite, making me wonder if whatever was done there caused this bug instead (but
it's just a guess): RF-11973
--
This message was sent by Atlassian JIRA
(v6.2.3#6260)