[richfaces-issues] [JBoss JIRA] Commented: (RF-3512) tabPanel loads content of all tabs in server/ajax switchType mode
Zied Hamdi (JIRA)
jira-events at lists.jboss.org
Thu May 22 11:03:59 EDT 2008
[ http://jira.jboss.com/jira/browse/RF-3512?page=comments#action_12413694 ]
Zied Hamdi commented on RF-3512:
--------------------------------
A workaround exists but it's very ugly and consists on repetitive buggy code it's maybe better embedded in another component: (the rendered property is evaluated after the el so it doesn't adress my problem). Here's the ugly solution:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:rich="http://richfaces.org/rich"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:c="http://java.sun.com/jstl/core">
<f:view>
<a4j:loadStyle src="/styles/gisi.css"></a4j:loadStyle>
<ui:insert name="modalPanels" />
<body style="margin: 0; padding: 0;">
<h:form id="mainForm">
<ui:debug hotkey="e" rendered="true" />
<rich:tabPanel switchType="ajax" binding="#{testController.tabPanel}">
<rich:tab id="tab1" label="tab1">
<c:if test="#{testController.tabPanel.selectedTab eq 'tab1'}">
<h:outputText value="#{testController.tab1Text}" />
</c:if>
</rich:tab>
<rich:tab id="tab2" label="tab2">
<c:if test="#{testController.tabPanel.selectedTab eq 'tab2'}">
<h:outputText value="#{testController.tab2Text}" />
</c:if>
</rich:tab>
<rich:tab label="tab3" id="tab3">
<c:if test="#{testController.tabPanel.selectedTab eq 'tab3'}">
<h:outputText value="#{testController.tab3Text}" />
</c:if>
</rich:tab>
</rich:tabPanel>
</h:form>
</body>
</f:view>
</html>
Notice the BB must initialize the selected tab to have its content displayed the first time we open the page:
package net.gisiinteractive.common.test.jsf.richfaces;
import org.richfaces.component.html.HtmlTabPanel;
public class TestController {
private static org.apache.commons.logging.Log LOG = org.apache.commons.logging.LogFactory
.getLog(TestController.class);
private HtmlTabPanel tabPanel = new HtmlTabPanel();
public TestController() {
tabPanel.setSelectedTab("tab1");
}
public String getTab1Text() {
String value = "displaying tab 1";
LOG.info(value);
return value;
}
public String getTab2Text() {
String value = "displaying tab 2";
LOG.info(value);
return value;
}
public String getTab3Text() {
String value = "displaying tab 3";
LOG.info(value);
return value;
}
public HtmlTabPanel getTabPanel() {
if (tabPanel != null)
return (HtmlTabPanel) tabPanel;
return tabPanel;
}
public void setTabPanel(HtmlTabPanel tabPanel) {
this.tabPanel = tabPanel;
}
}
> tabPanel loads content of all tabs in server/ajax switchType mode
> -----------------------------------------------------------------
>
> Key: RF-3512
> URL: http://jira.jboss.com/jira/browse/RF-3512
> Project: RichFaces
> Issue Type: Bug
> Affects Versions: 3.2.0
> Environment: Sun RI 1.2, tomcat 6
> Reporter: Zied Hamdi
>
> Content of all tabPanel tabs is encoded when displaying a tab: this bug becomes major if our home page loads all data relative to the app. The following code demonstrates this feature:
> This is what we get in the log file: all tabs are loaded, then the one to display is loaded again
> INFO [gisiinteractive.common.test.jsf.richfaces.TestController] displaying tab 1
> INFO [gisiinteractive.common.test.jsf.richfaces.TestController] displaying tab 2
> INFO [gisiinteractive.common.test.jsf.richfaces.TestController] displaying tab 3
> INFO [gisiinteractive.common.test.jsf.richfaces.TestController] displaying tab 1
> For this code, I have no direct way to avoid this (I will try to enable/disable the rendered attribute on each tab on display...) :
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml"
> xmlns:f="http://java.sun.com/jsf/core"
> xmlns:h="http://java.sun.com/jsf/html"
> xmlns:rich="http://richfaces.org/rich"
> xmlns:ui="http://java.sun.com/jsf/facelets"
> xmlns:a4j="http://richfaces.org/a4j"
> xmlns:jsp="http://java.sun.com/JSP/Page">
> <f:view>
> <a4j:loadStyle src="/styles/gisi.css"></a4j:loadStyle>
> <ui:insert name="modalPanels" />
> <body style="margin: 0; padding: 0;">
> <h:form id="mainForm">
> <ui:debug hotkey="e" rendered="true" />
> <rich:tabPanel switchType="ajax">
> <rich:tab label="tab1">
> <h:outputText value="#{testController.tab1Text}"/>
> </rich:tab>
> <rich:tab label="tab2">
> <h:outputText value="#{testController.tab2Text}"/>
> </rich:tab>
> <rich:tab label="tab3">
> <h:outputText value="#{testController.tab3Text}"/>
> </rich:tab>
> </rich:tabPanel>
> </h:form>
> </body>
> </f:view>
> </html>
> package net.gisiinteractive.common.test.jsf.richfaces;
> public class TestController {
> private static org.apache.commons.logging.Log LOG = org.apache.commons.logging.LogFactory
> .getLog(TestController.class);
> public TestController() {
> }
> public String getTab1Text() {
> String value = "displaying tab 1";
> LOG.info(value);
> return value;
> }
> public String getTab2Text() {
> String value = "displaying tab 2";
> LOG.info(value);
> return value;
> }
> public String getTab3Text() {
> String value = "displaying tab 3";
> LOG.info(value);
> return value;
> }
> }
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the richfaces-issues
mailing list