a4j Speed
konikoni Mar 31, 2007 4:40 PMI don't now why, but i like not now, why this code is so slowly. i tested it wich different browser:
VIEW:
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:rich="http://richfaces.ajax4jsf.org/rich"
xmlns:a4j="https://ajax4jsf.dev.java.net/ajax"
template="templates/temp.xhtml">
<ui:define name="head_links">
</ui:define>
<ui:define name="main">
<s:div style="margin-top:20px;float:left;">
<a4j:region>
<h:form>
<rich:tree nodeSelectListener="#{tmanager.selectNode}" reRender="mns" immediate="true" ajaxSubmitSelection="true" style="width:300px;height:150px;" value="#{tmanager.root}" var="item" nodeFace="root">
<rich:treeNode type="root">
<h:outputText value="#{item.type}" />
</rich:treeNode>
<rich:treeNode type="item" >
<h:outputText value="#{item.name}" />
</rich:treeNode>
</rich:tree>
</h:form>
</a4j:region>
</s:div>
<h:panelGroup id="mns" style="margin-top:20px;float:left;">
<h:panelGroup id="cl1" rendered="#{tmanager.showPart == 1}">
<ui:include src ="/filliale.xhtml" />
</h:panelGroup>
<h:panelGroup id="cl2" rendered="#{tmanager.showPart == 2}">
<ui:include src ="/nfilliale.xhtml" />
</h:panelGroup>
<h:panelGroup id="cl3" rendered="#{tmanager.showPart == 3}">
<ui:include src ="/pedit.xhtml" />
</h:panelGroup>
<h:panelGroup id="cl4" rendered="#{tmanager.showPart == 4}">
<ui:include src ="/fabmodel.xhtml" />
</h:panelGroup>
<h:panelGroup id="cl5" rendered="#{tmanager.showPart == 5}">
<ui:include src ="/nmodel.xhtml" />
</h:panelGroup>
<h:panelGroup id="cl6" rendered="#{tmanager.showPart == 6}">
<ui:include src ="/hmodel.xhtml" />
</h:panelGroup>
<h:panelGroup id="cl7" rendered="#{tmanager.showPart == 7}">
<a4j:include viewId="/firstfr.xhtml" />
</h:panelGroup>
<h:panelGroup id="cl8" rendered="#{tmanager.showPart == 8}">
<rich:panel>
<a4j:include viewId="/fahrzeug.xhtml" />
</rich:panel>
</h:panelGroup>
</h:panelGroup>
</ui:define>
</ui:composition>VIEW for include (<ui:include src ="/filliale.xhtml" /> ):
<s:div xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:a4j="https://ajax4jsf.dev.java.net/ajax">
<a4j:region>
<h:form>
<h:panelGrid column="2">
<h:outputText value="Fabrikat" />
<s:decorate>
<h:selectOneMenu value="#{hersteller}" required="true">
<s:convertEntity />
<s:selectItems value="#{allHer.resultList}" var="her" label="#{her.bezeichnung}" noSelectionLabel="Bitte waehlen..."/>
</h:selectOneMenu>
</s:decorate>
<h:outputText value="Modell" />
<h:inputText id="mdl" value="#{kfzmodel.bezeichnung}" size="15" required="true" > <s:validate/></h:inputText>
<a4j:commandLink action="#{hmodel.saveMod}" reRender="msg_vl" value="Speichern" />
</h:panelGrid>
</h:form>
</a4j:region>
</s:div>
Session Bean:
package kk.rentform.session;
import java.util.Iterator;
import java.util.List;
import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.faces.event.AbortProcessingException;
import javax.faces.event.ActionEvent;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.richfaces.component.TreeNode;
import org.richfaces.component.events.NodeSelectedEvent;
import kk.rentform.entity.Treeroot;
import org.richfaces.component.html.HtmlTree;
/**
*
* @author kostja
*/
@Stateful
@Name("tmanager")
@Scope(ScopeType.SESSION)
public class Treemanager implements TreemanagerInterface{
private Treeroot root;
private int showPart = 0;
@Remove
@Destroy
public void destroy() {
}
public void selectNode(NodeSelectedEvent event){
HtmlTree tree = (HtmlTree)event.getComponent();
Object rowData = tree.getRowData();
String select = rowData.toString();
if (select.equals("Filliale bearbeiten")){
showPart = 1;
}else if (select.equals("Neue Filliale")){
showPart = 2;
}else if (select.equals("Persoenliche Daten")){
showPart = 3;
}else if (select.equals("Neues Fabrikat")){
showPart = 4;
}else if (select.equals("Neues Modell")){
showPart = 5;
}else if (select.equals("Fabrikat/Modell bearbeiten")){
showPart = 6;
}else if (select.equals("Neues Fahrzeug")){
showPart = 7;
}else if (select.equals("Fahrzeug bearbeiten")){
showPart = 8;
}
}
public void setRoot(kk.rentform.entity.Treeroot root) {
this.root = root;
}
public kk.rentform.entity.Treeroot getRoot() {
if (root == null)
init();
return root;
}
public Object getData() {
if (root == null)
init();
return root;
}
public int getShowPart() {
return showPart;
}
public void setShowPart(int showPart) {
this.showPart = showPart;
}
private void init() {
this.root = new Treeroot();
this.root.setType("root");
this.root.setName("root");
this.root.setParent(null);
/*
* Items
*/
// Neue Filliale
Treeroot item1 = new Treeroot();
item1.setType("item");
item1.setParent(this.root);
item1.setId(1);
this.root.addChild(1,item1);
item1.setName("Neue Filliale");
// Filliale bearbeiten
Treeroot item2 = new Treeroot();
item2.setType("item");
item2.setParent(this.root);
item2.setId(2);
this.root.addChild(2,item2);
item2.setName("Filliale bearbeiten");
// Persoenliche Daten
Treeroot item = new Treeroot();
item.setType("item");
item.setParent(this.root);
item.setId(0);
this.root.addChild(0,item);
item.setName("Persoenliche Daten");
// Fabrkat
Treeroot item3 = new Treeroot();
item3.setType("item");
item3.setParent(this.root);
item3.setId(3);
this.root.addChild(3,item3);
item3.setName("Neues Fabrikat");
//Modell
Treeroot item5 = new Treeroot();
item5.setType("item");
item5.setParent(this.root);
item5.setId(5);
this.root.addChild(5,item5);
item5.setName("Neues Modell");
// Fabrkat bearbeiten
Treeroot item4 = new Treeroot();
item4.setType("item");
item4.setParent(this.root);
item4.setId(4);
this.root.addChild(4,item4);
item4.setName("Fabrikat/Modell bearbeiten");
// Neues Fahrzeug
Treeroot item6 = new Treeroot();
item6.setType("item");
item6.setParent(this.root);
item6.setId(6);
this.root.addChild(6,item6);
item6.setName("Neues Fahrzeug");
// Fahrzeug bearbeiten
Treeroot item7 = new Treeroot();
item7.setType("item");
item7.setParent(this.root);
item7.setId(7);
this.root.addChild(7,item7);
item7.setName("Fahrzeug bearbeiten");
}
}Some request take several seconds, also locally.
Whitout a4j is the speed good.
I use JBoss AP 4.0.5 + Seam last release.