[
https://issues.apache.org/jira/browse/TRINIDAD-1755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12856324#action_12856324
]
Günter D. commented on TRINIDAD-1755:
-------------------------------------
Hi Markus,
I exactly got the same problem. Did you find a solution yet?
I am adding a script via ExtendedRenderKitService to push a button, causing the
table to re-render, which can't be state of the art.
Regards,
Günter
> Refresh problems with tr:tabel using a filter string defined in a tr_inputText
> ------------------------------------------------------------------------------
>
> Key: TRINIDAD-1755
> URL: https://issues.apache.org/jira/browse/TRINIDAD-1755
> Project: MyFaces Trinidad
> Issue Type: Bug
> Components: Components
> Affects Versions: 1.2.13-core
> Environment: Trinidad 1.2.13, MyFaces 1.2.8, Tomahawk 1.1.9, Facelets
> 1.1.15, Tomcat 6.0.20
> Reporter: Markus Petri
>
> In our application, we use a tr:inputText to filter the tables data using PPR.
> 1st problem:
> When the filter method of the backing bean deliveres 1-4 matches, everything
> works fine. But if there are more than 5 matches, I need to press the button
> twice to get the table re-rendered.
> 2nd problem:
> We use the rows attribute to show 10 entries each page. If the filter method
> deliveres more than 10 rows, I need also to click twice the "show next" link
> (but only the first time) to get to the next page. After the first click, I
> can switch the pages as purposed.
> Here our *.jspx (this *jspx is included into a
> <t:panelTabbedPane><t:panelTab> )
> [...]
> <tr:panelCaptionGroup
> captionText="#{resource['label.section.filteroptions']}"
> inlineStyle="margin-bottom:10px;">
> <table border="0" cellpadding="0" cellspacing="0">
> <tr>
> <td><tr:inputText id="filterString"
> value="#{listing.filterString}" partialTriggers="cmd_reset"
> styleClass="filterInput"
> onblur="if(this.value ==
> ''){this.value='#{resource['text.filteroptions.default']}';this.style.color =
> '#A0A0A0';}"
> onfocus="if(this.value ==
> '#{resource['text.filteroptions.default']}'){this.value='';this.style.color =
> '#000000';}"
>
> onkeyup="if(event.keyCode==13)document.getElementById('tab2:listForm:cmd_filter').click();"/>
> </td>
> <td>
> <tr:selectOneChoice value="#{listing.filterDate}">
> <f:selectItem
> itemLabel="#{resource['selectBox.choice.allRegistrations']}" itemValue="0"/>
> <f:selectItem
> itemLabel="#{resource['selectBox.choice.todaysRegistrations']}"
> itemValue="1"/>
> </tr:selectOneChoice>
> </td>
> <td><tr:commandButton id="cmd_filter"
> text="#{resource['button.filterList']}"
> shortDesc="#{resource['tooltip.action.filterList']}"
> actionListener="#{listing.filter}" partialSubmit="true" />
> </td>
> <td><tr:commandButton id="cmd_reset"
> text="#{resource['button.filterReset']}"
> shortDesc="#{resource['tooltip.action.reset']}"
> blocking="true"
> actionListener="#{listing.reset}" partialSubmit="true"/>
> </td>
> </tr>
> </table>
> </tr:panelCaptionGroup>
> <tr:table binding="#{listing.table}" value="#{listing.regInfos}" var="regs"
> rowBandingInterval="1" rows="10" partialTriggers="::cmd_filter ::cmd_reset
> ::pollid" immediate="true">
> <tr:column width="160" inlineStyle="vertical-align:top;" sortable="true"
> sortProperty="date">
> <f:facet name="header">
> <tr:outputText value="#{resource['table.registrations.plannedArrival']}"/>
> </f:facet>
> <tr:outputText value="#{regs.date}" id="date">
> <tr:convertDateTime pattern="#{resource['pattern.dateTime']}" type="both"
> />
> </tr:outputText>
> </tr:column>
> <tr:column width="100" inlineStyle="vertical-align:top;">
> <f:facet name="header">
> <tr:outputText value="#{resource['table.registrations.room']}"/>
> </f:facet>
> <tr:outputText value="#{regs.roomNumber}"/>
> </tr:column>
> [...]
> and the relevant part of the backing bean (using SESSION_SCOPE):
> /**
> * Process the filter action.
> */
> public void filter(ActionEvent e) {
> refreshTable();
> }
> public void refreshTable(){
> initialize();
> RequestContext.getCurrentInstance().addPartialTarget(getTable());
> }
> private void initialize(){
> Authentication auth =
> SecurityContextHolder.getContext().getAuthentication();
> if (auth instanceof VirAuthenticationToken) {
> String login = ((VirAuthenticationToken)auth).getLogin();
> try {
> setRegInfos(ServiceUtils.getOpenRegistrations(login,
> getDefaultSearchString().equals(getFilterString())? "" :
> getFilterString(),getFilterReriod()));
> }catch (RemoteException exc) {
> log.fatal("Error processing business method - Remote
> error - " + ServiceManager.getInstance().getServiceExceptionMessage(exc));
>
> }
> }
> }
> When debugging, it shows the same values both at the first and at the second
> click, but as told before the table is only re-rendered after the second
> click.
> Any suggestions?
> Thanks in advance,
> Markus
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira