[
https://issues.jboss.org/browse/RF-11410?page=com.atlassian.jira.plugin.s...
]
Brian Leathem updated RF-11410:
-------------------------------
Description:
I've created a composite component which contains two richfaces extented data tables.
Each Datatable contains a column for a button to perform an action. (in the left datatable
there is an 'add' button, on the right datatable a 'remove' button).
Everything works fine until I try to attach a client behavior to the add / remove btns. I
want to monitor my component for selection and removal of any value from the calling
page.
The client behavior is triggered as expected, but the method behind the add and remove
btns is executed twice! This also happens which actionListener attribute instead of action
attribute.
I've replaced richfaces ext. DataTable by h:dataTable and everything works fine.
Here is the xml of my composite component:
-----
{code}
<?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:r="http://richfaces.org/rich"
xmlns:a="http://richfaces.org/a4j"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:o="http://java.sun.com/jsf/composite/ezcomp"
xmlns:cc="http://java.sun.com/jsf/composite" >
<!-- INTERFACE -->
<cc:interface componentType="MultiplePersonSelectionComponent">
<cc:attribute name="all" type="java.util.List" />
<cc:attribute name="selection" type="java.util.List" />
<cc:clientBehavior name="addPerson" event="action"
targets="allPersonTable:addBtn" />
<cc:clientBehavior name="removePerson" event="action"
targets="selectedPersonTable:removeBtn" />
<cc:attribute name="refresh" type="java.lang.String"
default=""/>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<div id="#{cc.clientId}" style="width: 100%">
<h:panelGrid columns="2" width="100%"
columnClasses="pnlTop, pnlTop">
<r:panel header="Alle Personen" id="all"
style="text-align: center;">
<r:extendedDataTable
value="#{cc.attrs.all}"
var="p"
id="allPersonTable"
selectionMode="none"
rows="10"
<f:facet name="header">
<r:dataScroller for="allPersonTable"
maxPages="5" id="dataScrollerTop" />
</f:facet>
<f:facet name="footer">
<r:dataScroller for="allPersonTable"
maxPages="5" id="dataScrollerBottom"/>
</f:facet>
<r:column
filterExpression="#{fn:containsIgnoreCase(p.firstName,cc.allFirstName)}"
sortBy="#{p.firstName}"
sortOrder="#{cc.allFirstNameSortOrder}"
<f:facet
name="header">
<h:panelGrid columns="1"
style="width:100%;" columnClasses="colTop">
<h:commandLink
action="#{cc.sortAllByFirstName}" >
<a:ajax render="allPersonTable@body"
/>
<h:outputText value="Vorname" />
</h:commandLink>
<h:inputText value="#{cc.allFirstName}"
id="firstnameFilter"
style="width: 75px;"
<a:ajax event="keyup"
render="allPersonTable@body "
execute="@this"
/>
<a:ajax event="blur"
render="dataScrollerTop
dataScrollerBottom"
execute="@this"
/>
</h:inputText>
</h:panelGrid>
</f:facet>
<h:outputText value="#{p.firstName}" />
</r:column>
<r:column
filterExpression="#{fn:containsIgnoreCase(p.lastName,cc.allLastName)}"
sortBy="#{p.lastName}"
sortOrder="#{cc.allLastNameSortOrder}">
<f:facet name="header">
<h:panelGrid columns="1"
style="width: 100%;"
columnClasses="colTop">
<h:commandLink
action="#{cc.sortAllByLastName}" >
<a:ajax render="allPersonTable@body"
/>
<h:outputText value="Nachname" />
</h:commandLink>
<h:inputText value="#{cc.allLastName}"
id="lastnameFilter"
style="width:75px;"
<a:ajax event="keyup"
render="allPersonTable@body "
execute="@this"
/>
</h:inputText>
</h:panelGrid>
</f:facet>
<h:outputText value="#{p.lastName}" />
</r:column>
<r:column>
<f:facet name="header">
<h:outputText value="Auswahl" />
</f:facet>
<h:panelGroup id="addBtnGroup">
<h:commandButton value="add"
action="#{cc.add(p)}"
disabled="#{cc.attrs.selection.contains(p)}"
id="addBtn" >
<f:ajax event="action"
render=":#{cc.clientId}:selectedPersonTable @this #{cc.attrs.refresh}"
/>
</h:commandButton>
</h:panelGroup>
</r:column>
</r:extendedDataTable>
</r:panel>
<r:panel header="Auswahl" id="selection"
style="text-align: center;">
<r:extendedDataTable
value="#{cc.attrs.selection}"
var="p" id="selectedPersonTable"
rows="10" style="width: 100%"
selectionMode="none">
<f:facet name="header">
<r:dataScroller for="selectedPersonTable"
id="selectedDataScrollerTop" maxPages="5" />
</f:facet>
<f:facet name="footer">
<r:dataScroller for="selectedPersonTable"
id="selectedDataScrollerBottom" maxPages="5" />
</f:facet>
<r:column
filterExpression="#{fn:containsIgnoreCase(p.firstName,cc.selectedFirstName)}"
sortBy="#{p.firstName}"
sortOrder="#{cc.selectedFirstNameSortOrder}"
<f:facet
name="header">
<h:panelGrid columns="1"
style="width:100%;" columnClasses="colTop">
<h:commandLink
action="#{cc.sortSelectedByFirstName}" >
<a:ajax
render="selectedPersonTable@body" />
<h:outputText value="Vorname" />
</h:commandLink>
<h:inputText
value="#{cc.selectedFirstName}"
id="firstnameFilter"
style="width: 75px;"
<a:ajax event="keyup"
render="selectedPersonTable@body
"
execute="@this"
/>
<a:ajax event="blur"
render="selectedDataScrollerTop
selectedDataScrollerBottom"
execute="@this"
/>
</h:inputText>
</h:panelGrid>
</f:facet>
<h:outputText value="#{p.firstName}" />
</r:column>
<r:column
filterExpression="#{fn:containsIgnoreCase(p.lastName,cc.selectedLastName)}"
sortBy="#{p.lastName}"
sortOrder="#{cc.selectedLastNameSortOrder}">
<f:facet name="header">
<h:panelGrid columns="1"
style="width: 100%;"
columnClasses="colTop">
<h:commandLink
action="#{cc.sortSelectedByLastName}" >
<a:ajax
render="selectedPersonTable@body" />
<h:outputText value="Nachname" />
</h:commandLink>
<h:inputText
value="#{cc.selectedLastName}"
id="lastnameFilter"
style="width:75px;"
<a:ajax event="keyup"
render="selectedPersonTable@body
"
execute="@this"
/>
</h:inputText>
</h:panelGrid>
</f:facet>
<h:outputText value="#{p.lastName}" />
</r:column>
<r:column>
<f:facet name="header">
<h:outputText value="" />
</f:facet>
<h:panelGroup id="removeBtnGroup">
<h:commandButton value="remove"
action="#{cc.remove(p)}"
id="removeBtn" >
<f:ajax event="action"
render=":#{cc.clientId}:allPersonTable
:#{cc.clientId}:selectedPersonTable #{cc.attrs.refresh}"
/>
</h:commandButton>
</h:panelGroup>
</r:column>
</r:extendedDataTable >
</r:panel>
</h:panelGrid>
</div>
</cc:implementation>
</html>
{code}
-----
And there's the place I use it:
-----
{code}
<o:MultiplePersonSelection all="#{ivb.persons}"
selection="#{ivb.selection}"
refresh="">
<f:ajax event="addPerson"
render=":myForm:listing" />
<f:ajax event="removePerson"
render=":myForm:listing" />
</o:MultiplePersonSelection>
<h:panelGroup id="listing">
<h:dataTable value="#{ivb.selection}" var="p"
id="liste">
<h:column>
#{p.firstName}
</h:column>
<h:column>
#{p.lastName}
</h:column>
</h:dataTable>
</h:panelGroup>
{code}
----
was:
I've created a composite component which contains two richfaces extented data tables.
Each Datatable contains a column for a button to perform an action. (in the left datatable
there is an 'add' button, on the right datatable a 'remove' button).
Everything works fine until I try to attach a client behavior to the add / remove btns. I
want to monitor my component for selection and removal of any value from the calling
page.
The client behavior is triggered as expected, but the method behind the add and remove
btns is executed twice! This also happens which actionListener attribute instead of action
attribute.
I've replaced richfaces ext. DataTable by h:dataTable and everything works fine.
Here is the xml of my composite component:
-----
<?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:r="http://richfaces.org/rich"
xmlns:a="http://richfaces.org/a4j"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:o="http://java.sun.com/jsf/composite/ezcomp"
xmlns:cc="http://java.sun.com/jsf/composite" >
<!-- INTERFACE -->
<cc:interface componentType="MultiplePersonSelectionComponent">
<cc:attribute name="all" type="java.util.List" />
<cc:attribute name="selection" type="java.util.List" />
<cc:clientBehavior name="addPerson" event="action"
targets="allPersonTable:addBtn" />
<cc:clientBehavior name="removePerson" event="action"
targets="selectedPersonTable:removeBtn" />
<cc:attribute name="refresh" type="java.lang.String"
default=""/>
</cc:interface>
<!-- IMPLEMENTATION -->
<cc:implementation>
<div id="#{cc.clientId}" style="width: 100%">
<h:panelGrid columns="2" width="100%"
columnClasses="pnlTop, pnlTop">
<r:panel header="Alle Personen" id="all"
style="text-align: center;">
<r:extendedDataTable
value="#{cc.attrs.all}"
var="p"
id="allPersonTable"
selectionMode="none"
rows="10"
<f:facet name="header">
<r:dataScroller for="allPersonTable"
maxPages="5" id="dataScrollerTop" />
</f:facet>
<f:facet name="footer">
<r:dataScroller for="allPersonTable"
maxPages="5" id="dataScrollerBottom"/>
</f:facet>
<r:column
filterExpression="#{fn:containsIgnoreCase(p.firstName,cc.allFirstName)}"
sortBy="#{p.firstName}"
sortOrder="#{cc.allFirstNameSortOrder}"
<f:facet
name="header">
<h:panelGrid columns="1"
style="width:100%;" columnClasses="colTop">
<h:commandLink
action="#{cc.sortAllByFirstName}" >
<a:ajax render="allPersonTable@body"
/>
<h:outputText value="Vorname" />
</h:commandLink>
<h:inputText value="#{cc.allFirstName}"
id="firstnameFilter"
style="width: 75px;"
<a:ajax event="keyup"
render="allPersonTable@body "
execute="@this"
/>
<a:ajax event="blur"
render="dataScrollerTop
dataScrollerBottom"
execute="@this"
/>
</h:inputText>
</h:panelGrid>
</f:facet>
<h:outputText value="#{p.firstName}" />
</r:column>
<r:column
filterExpression="#{fn:containsIgnoreCase(p.lastName,cc.allLastName)}"
sortBy="#{p.lastName}"
sortOrder="#{cc.allLastNameSortOrder}">
<f:facet name="header">
<h:panelGrid columns="1"
style="width: 100%;"
columnClasses="colTop">
<h:commandLink
action="#{cc.sortAllByLastName}" >
<a:ajax render="allPersonTable@body"
/>
<h:outputText value="Nachname" />
</h:commandLink>
<h:inputText value="#{cc.allLastName}"
id="lastnameFilter"
style="width:75px;"
<a:ajax event="keyup"
render="allPersonTable@body "
execute="@this"
/>
</h:inputText>
</h:panelGrid>
</f:facet>
<h:outputText value="#{p.lastName}" />
</r:column>
<r:column>
<f:facet name="header">
<h:outputText value="Auswahl" />
</f:facet>
<h:panelGroup id="addBtnGroup">
<h:commandButton value="add"
action="#{cc.add(p)}"
disabled="#{cc.attrs.selection.contains(p)}"
id="addBtn" >
<f:ajax event="action"
render=":#{cc.clientId}:selectedPersonTable @this #{cc.attrs.refresh}"
/>
</h:commandButton>
</h:panelGroup>
</r:column>
</r:extendedDataTable>
</r:panel>
<r:panel header="Auswahl" id="selection"
style="text-align: center;">
<r:extendedDataTable
value="#{cc.attrs.selection}"
var="p" id="selectedPersonTable"
rows="10" style="width: 100%"
selectionMode="none">
<f:facet name="header">
<r:dataScroller for="selectedPersonTable"
id="selectedDataScrollerTop" maxPages="5" />
</f:facet>
<f:facet name="footer">
<r:dataScroller for="selectedPersonTable"
id="selectedDataScrollerBottom" maxPages="5" />
</f:facet>
<r:column
filterExpression="#{fn:containsIgnoreCase(p.firstName,cc.selectedFirstName)}"
sortBy="#{p.firstName}"
sortOrder="#{cc.selectedFirstNameSortOrder}"
<f:facet
name="header">
<h:panelGrid columns="1"
style="width:100%;" columnClasses="colTop">
<h:commandLink
action="#{cc.sortSelectedByFirstName}" >
<a:ajax
render="selectedPersonTable@body" />
<h:outputText value="Vorname" />
</h:commandLink>
<h:inputText
value="#{cc.selectedFirstName}"
id="firstnameFilter"
style="width: 75px;"
<a:ajax event="keyup"
render="selectedPersonTable@body
"
execute="@this"
/>
<a:ajax event="blur"
render="selectedDataScrollerTop
selectedDataScrollerBottom"
execute="@this"
/>
</h:inputText>
</h:panelGrid>
</f:facet>
<h:outputText value="#{p.firstName}" />
</r:column>
<r:column
filterExpression="#{fn:containsIgnoreCase(p.lastName,cc.selectedLastName)}"
sortBy="#{p.lastName}"
sortOrder="#{cc.selectedLastNameSortOrder}">
<f:facet name="header">
<h:panelGrid columns="1"
style="width: 100%;"
columnClasses="colTop">
<h:commandLink
action="#{cc.sortSelectedByLastName}" >
<a:ajax
render="selectedPersonTable@body" />
<h:outputText value="Nachname" />
</h:commandLink>
<h:inputText
value="#{cc.selectedLastName}"
id="lastnameFilter"
style="width:75px;"
<a:ajax event="keyup"
render="selectedPersonTable@body
"
execute="@this"
/>
</h:inputText>
</h:panelGrid>
</f:facet>
<h:outputText value="#{p.lastName}" />
</r:column>
<r:column>
<f:facet name="header">
<h:outputText value="" />
</f:facet>
<h:panelGroup id="removeBtnGroup">
<h:commandButton value="remove"
action="#{cc.remove(p)}"
id="removeBtn" >
<f:ajax event="action"
render=":#{cc.clientId}:allPersonTable
:#{cc.clientId}:selectedPersonTable #{cc.attrs.refresh}"
/>
</h:commandButton>
</h:panelGroup>
</r:column>
</r:extendedDataTable >
</r:panel>
</h:panelGrid>
</div>
</cc:implementation>
</html>
-----
And there's the place I use it:
-----
<o:MultiplePersonSelection all="#{ivb.persons}"
selection="#{ivb.selection}"
refresh="">
<f:ajax event="addPerson"
render=":myForm:listing" />
<f:ajax event="removePerson"
render=":myForm:listing" />
</o:MultiplePersonSelection>
<h:panelGroup id="listing">
<h:dataTable value="#{ivb.selection}" var="p"
id="liste">
<h:column>
#{p.firstName}
</h:column>
<h:column>
#{p.lastName}
</h:column>
</h:dataTable>
</h:panelGroup>
----
> CommandButton in ExtendedDataTable; Action for commandButton is executed twice.
> -------------------------------------------------------------------------------
>
> Key: RF-11410
> URL:
https://issues.jboss.org/browse/RF-11410
> Project: RichFaces
> Issue Type: Bug
> Security Level: Public(Everyone can see)
> Components: compatibility
> Affects Versions: 4.1.0.Milestone1
> Environment: java 1.6.0_26
> glassfish 3.1
> Mojarra 2.1.0 (FCS 2.1.0-b11)
> Seam Faces 3.0.1.Final
> Reporter: Florian Schoedel
> Labels: new_and_noteworthy
>
> I've created a composite component which contains two richfaces extented data
tables. Each Datatable contains a column for a button to perform an action. (in the left
datatable there is an 'add' button, on the right datatable a 'remove'
button). Everything works fine until I try to attach a client behavior to the add / remove
btns. I want to monitor my component for selection and removal of any value from the
calling page.
> The client behavior is triggered as expected, but the method behind the add and
remove btns is executed twice! This also happens which actionListener attribute instead of
action attribute.
> I've replaced richfaces ext. DataTable by h:dataTable and everything works fine.
> Here is the xml of my composite component:
> -----
> {code}
> <?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:r="http://richfaces.org/rich"
>
xmlns:a="http://richfaces.org/a4j"
>
xmlns:h="http://java.sun.com/jsf/html"
>
xmlns:f="http://java.sun.com/jsf/core"
>
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
>
xmlns:o="http://java.sun.com/jsf/composite/ezcomp"
>
xmlns:cc="http://java.sun.com/jsf/composite" >
> <!-- INTERFACE -->
> <cc:interface componentType="MultiplePersonSelectionComponent">
> <cc:attribute name="all" type="java.util.List" />
> <cc:attribute name="selection" type="java.util.List"
/>
> <cc:clientBehavior name="addPerson" event="action"
targets="allPersonTable:addBtn" />
> <cc:clientBehavior name="removePerson" event="action"
targets="selectedPersonTable:removeBtn" />
> <cc:attribute name="refresh" type="java.lang.String"
default=""/>
> </cc:interface>
> <!-- IMPLEMENTATION -->
> <cc:implementation>
>
> <div id="#{cc.clientId}" style="width: 100%">
>
>
> <h:panelGrid columns="2" width="100%"
columnClasses="pnlTop, pnlTop">
> <r:panel header="Alle Personen" id="all"
style="text-align: center;">
> <r:extendedDataTable
> value="#{cc.attrs.all}"
> var="p"
> id="allPersonTable"
> selectionMode="none"
> rows="10"
>
> <f:facet
name="header">
> <r:dataScroller for="allPersonTable"
maxPages="5" id="dataScrollerTop" />
> </f:facet>
> <f:facet name="footer">
> <r:dataScroller for="allPersonTable"
maxPages="5" id="dataScrollerBottom"/>
> </f:facet>
> <r:column
>
filterExpression="#{fn:containsIgnoreCase(p.firstName,cc.allFirstName)}"
> sortBy="#{p.firstName}"
> sortOrder="#{cc.allFirstNameSortOrder}"
>
>
<f:facet name="header">
> <h:panelGrid columns="1"
style="width:100%;" columnClasses="colTop">
> <h:commandLink
action="#{cc.sortAllByFirstName}" >
> <a:ajax
render="allPersonTable@body" />
> <h:outputText value="Vorname"
/>
> </h:commandLink>
> <h:inputText
value="#{cc.allFirstName}"
> id="firstnameFilter"
> style="width: 75px;"
>
>
<a:ajax event="keyup"
> render="allPersonTable@body
"
> execute="@this"
> />
> <a:ajax event="blur"
> render="dataScrollerTop
dataScrollerBottom"
> execute="@this"
> />
> </h:inputText>
> </h:panelGrid>
> </f:facet>
> <h:outputText value="#{p.firstName}" />
> </r:column>
> <r:column
>
filterExpression="#{fn:containsIgnoreCase(p.lastName,cc.allLastName)}"
> sortBy="#{p.lastName}"
> sortOrder="#{cc.allLastNameSortOrder}">
> <f:facet name="header">
> <h:panelGrid columns="1"
> style="width: 100%;"
> columnClasses="colTop">
> <h:commandLink
action="#{cc.sortAllByLastName}" >
> <a:ajax
render="allPersonTable@body" />
> <h:outputText value="Nachname"
/>
> </h:commandLink>
> <h:inputText
value="#{cc.allLastName}"
> id="lastnameFilter"
> style="width:75px;"
>
>
<a:ajax event="keyup"
> render="allPersonTable@body
"
> execute="@this"
> />
> </h:inputText>
> </h:panelGrid>
> </f:facet>
> <h:outputText value="#{p.lastName}" />
> </r:column>
> <r:column>
> <f:facet name="header">
> <h:outputText value="Auswahl" />
> </f:facet>
> <h:panelGroup id="addBtnGroup">
> <h:commandButton value="add"
> action="#{cc.add(p)}"
>
disabled="#{cc.attrs.selection.contains(p)}"
> id="addBtn" >
> <f:ajax event="action"
>
render=":#{cc.clientId}:selectedPersonTable @this #{cc.attrs.refresh}"
> />
> </h:commandButton>
> </h:panelGroup>
> </r:column>
> </r:extendedDataTable>
> </r:panel>
> <r:panel header="Auswahl" id="selection"
style="text-align: center;">
> <r:extendedDataTable
> value="#{cc.attrs.selection}"
> var="p" id="selectedPersonTable"
> rows="10" style="width: 100%"
> selectionMode="none">
> <f:facet name="header">
> <r:dataScroller for="selectedPersonTable"
id="selectedDataScrollerTop" maxPages="5" />
> </f:facet>
> <f:facet name="footer">
> <r:dataScroller for="selectedPersonTable"
id="selectedDataScrollerBottom" maxPages="5" />
> </f:facet>
> <r:column
>
filterExpression="#{fn:containsIgnoreCase(p.firstName,cc.selectedFirstName)}"
> sortBy="#{p.firstName}"
> sortOrder="#{cc.selectedFirstNameSortOrder}"
>
>
<f:facet name="header">
> <h:panelGrid columns="1"
style="width:100%;" columnClasses="colTop">
> <h:commandLink
action="#{cc.sortSelectedByFirstName}" >
> <a:ajax
render="selectedPersonTable@body" />
> <h:outputText value="Vorname"
/>
> </h:commandLink>
> <h:inputText
value="#{cc.selectedFirstName}"
> id="firstnameFilter"
> style="width: 75px;"
>
>
<a:ajax event="keyup"
> render="selectedPersonTable@body
"
> execute="@this"
> />
> <a:ajax event="blur"
> render="selectedDataScrollerTop
selectedDataScrollerBottom"
> execute="@this"
> />
> </h:inputText>
> </h:panelGrid>
> </f:facet>
> <h:outputText value="#{p.firstName}" />
> </r:column>
> <r:column
>
filterExpression="#{fn:containsIgnoreCase(p.lastName,cc.selectedLastName)}"
> sortBy="#{p.lastName}"
>
sortOrder="#{cc.selectedLastNameSortOrder}">
> <f:facet name="header">
> <h:panelGrid columns="1"
> style="width: 100%;"
> columnClasses="colTop">
> <h:commandLink
action="#{cc.sortSelectedByLastName}" >
> <a:ajax
render="selectedPersonTable@body" />
> <h:outputText value="Nachname"
/>
> </h:commandLink>
> <h:inputText
value="#{cc.selectedLastName}"
> id="lastnameFilter"
> style="width:75px;"
>
>
<a:ajax event="keyup"
> render="selectedPersonTable@body
"
> execute="@this"
> />
> </h:inputText>
> </h:panelGrid>
> </f:facet>
> <h:outputText value="#{p.lastName}" />
> </r:column>
> <r:column>
> <f:facet name="header">
> <h:outputText value="" />
> </f:facet>
> <h:panelGroup id="removeBtnGroup">
> <h:commandButton value="remove"
>
action="#{cc.remove(p)}"
> id="removeBtn" >
> <f:ajax event="action"
>
render=":#{cc.clientId}:allPersonTable :#{cc.clientId}:selectedPersonTable
#{cc.attrs.refresh}"
> />
> </h:commandButton>
> </h:panelGroup>
> </r:column>
> </r:extendedDataTable >
>
> </r:panel>
> </h:panelGrid>
> </div>
> </cc:implementation>
> </html>
> {code}
> -----
> And there's the place I use it:
> -----
> {code}
> <o:MultiplePersonSelection all="#{ivb.persons}"
selection="#{ivb.selection}"
> refresh="">
> <f:ajax event="addPerson"
render=":myForm:listing" />
> <f:ajax event="removePerson"
render=":myForm:listing" />
>
> </o:MultiplePersonSelection>
> <h:panelGroup id="listing">
> <h:dataTable value="#{ivb.selection}" var="p"
id="liste">
> <h:column>
> #{p.firstName}
> </h:column>
> <h:column>
> #{p.lastName}
> </h:column>
> </h:dataTable>
> </h:panelGroup>
> {code}
> ----
--
This message is automatically generated by JIRA.
For more information on JIRA, see:
http://www.atlassian.com/software/jira