You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@myfaces.apache.org by "Markus Petri (JIRA)" <de...@myfaces.apache.org> on 2010/03/15 14:52:27 UTC

[jira] Created: (TRINIDAD-1755) Refresh problems with tr:tabel using a filter string defined in a tr_inputText

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.
-
You can reply to this email to add a comment to the issue online.


[jira] Commented: (TRINIDAD-1755) Refresh problems with tr:tabel using a filter string defined in a tr_inputText

Posted by "Günter D. (JIRA)" <de...@myfaces.apache.org>.
    [ 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