Problem with Ajax
ceene.ceene.gmx.net Jul 26, 2010 8:24 AMHello all
I'm relative new in Seam and have a problem with my web application.
The situation:
With the help of the following website (http://docs.jboss.com/seam/latest/reference/en-US/html/remoting.html ) and my book Jboss Seam
I tried to add ajax in my application, but nothings happend. I have absolut no idea where the mistake is. I hope anybody here can help me.
I'd like to call a function in my stateful-bean if a file d lost the focus......thats all.
Here ist my web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <context-param> <param-name>javax.faces.CONFIG_FILES</param-name> <param-value>/WEB-INF/navigation.xml</param-value> </context-param> <!-- Seam --> <listener> <listener-class>org.jboss.seam.servlet.SeamListener</listener-class> </listener> <servlet> <servlet-name>Seam Resource Servlet</servlet-name> <servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Seam Resource Servlet</servlet-name> <url-pattern>/seam/resource/*</url-pattern> </servlet-mapping> <filter> <filter-name>Seam Filter</filter-name> <filter-class>org.jboss.seam.web.SeamFilter</filter-class> </filter> <filter-mapping> <filter-name>Seam Filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- MyFaces --> <!-- <listener> <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class> </listener> --> <context-param> <param-name>javax.faces.STATE_SAVING_METHOD</param-name> <param-value>client</param-value> </context-param> <context-param> <param-name>facelets.DEVELOPMENT</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>javax.faces.DEFAULT_SUFFIX</param-name> <param-value>.xhtml</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>*.seam</url-pattern> </servlet-mapping> </web-app>
Here ist a part of my client:
<!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:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:s="http://jboss.com/products/seam/taglib"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <link type="text/css" rel="stylesheet" href="../style.css" /> <title>Axel Springer Deutschland - Dialogpflege</title> </head> <body> <script type="text/javascript" src="seam/resource/remoting/resource/remote.js"> </script> <script type="text/javascript" src="seam/resource/remoting/interface.js?suchhdl"> </script> <script language="javascript"> //<![CDATA[ //Seam.Remoting.setDebug(true); /*Seam.Remoting.displayLoadingMessage = function() {}; Seam.Remoting.hideLoadingMessage = function() {};*/ //Denasynchronen Aufruf mit einem Callback-Handler ausführen function nameAufbereiten() { //Meine Seam Komponente abrufen var suchhdl = Seam.Component.getInstance("suchhdl"); suchhdl.nameAufbereiten(NameCallback); } function NameCallback(result) { alert(result); } // ]]> </script> <h:form id="anzeigen"> <table width="937" height="303" border="0"> <tr> <td height="94" colspan="2" class="Stil1" valign="top"> <fieldset> <legend class="Stil1">Sperr-Informationen</legend> <table width="100%"> <tr> <td width="16%">Personen-Sperre:</td> <td colspan="2"><h:selectOneMenu id="psperre" value="#{suchhdl.person.personenSperre}" style="height : 20px; width : 150px;" valueChangeListener="#{suchhdl.strtextChanged}"> <f:selectItems value="#{suchhdl.psperreList}"/> </h:selectOneMenu> </td> <td width="13%" style=" width : 85px;">Pers.- Sperrdatum</td> <td><h:inputText id="psperrdat" value="#{suchhdl.person.sperrdatum}" size="18"/> </td> <td width="15%" valign="top">Pers.-Sperr.- Letzter Bediener</td> <td width="18%" colspan="2"><h:inputText value="#{suchhdl.person.sperreLetzterBediener}" size="18" disabled="true"/> </td> </tr> <tr> <td valign="top">Adressen-Sperre:</td> <td colspan="2"><h:selectOneMenu value="#{suchhdl.person.adressenSperre}" style="height : 20px; width : 150px;" valueChangeListener="#{suchhdl.strtextChanged}" disabled="true"> <f:selectItems value="#{suchhdl.asperreList}"/> </h:selectOneMenu> </td> <td> <h:inputHidden id="auswahlFlag" value="#{suchhdl.auswahlFlag}" /> </td> </tr> </table> </fieldset> </td> <td width="17%" rowspan="2" valign="top"> <fieldset style="width: 140px"> <legend><span class="Stil1">Dialoge</span></legend> <table width="100%" border="0"> <tr> <td align="center"><h:commandButton id="suchen" action="#{suchhdl.update()}" value="Person suchen" styleClass="usrFormBtnSuchen"/> <br/><h:commandButton id="auswahl" action="#{suchhdl.auswahl()}" value="Person-Auswahl" styleClass="usrFormBtnSuchen"/> <br/> <h:commandButton id="delete" action="#{suchhdl.delete()}" value="Person löschen" styleClass="usrFormBtnSuchen"/> <br/> <h:commandButton id="abbruch" action="#{suchhdl.reset()}" value="Abbruch" styleClass="usrFormBtnSuchen"/> <br/> <h:commandButton id="logout" action="#{identity.logout}" value="Logout" styleClass="usrFormBtnSuchen"/> </td> </tr> </table> </fieldset> </td> </tr> <tr> <td width="50%" rowspan="2" valign="top"> <fieldset> <legend class="Stil1">Namen und Anrede-Informationen</legend> <table width="100%" border="0"> <tr> <td width="35%" class="Stil1">Anrede:</td> <td width="65%"><h:selectOneMenu id="anrede" value="#{suchhdl.person.anredeschluessel}" style="height : 20px; width : 150px;" valueChangeListener="#{suchhdl.strtextChanged}"> <f:selectItems value="#{suchhdl.anredeList}"/> </h:selectOneMenu> </td> </tr> <tr> <td class="Stil1">Name1:</td> <td><h:inputText id="name1" value="#{suchhdl.person.name1}" size="40"/> </td> </tr> <tr> <td class="Stil1">Name2:</td> <td><h:inputText id="name2" value="#{suchhdl.person.name2}" size="40"/> </td> </tr> <tr> <td class="Stil1">Name3:</td> <td><h:inputText id="name3" value="#{suchhdl.person.name3}" size="40"/> </td> </tr> <tr> <td class="Stil1" valign="top">Name:</td> <td><h:inputTextarea id="name" cols="40" rows="3" value="#{suchhdl.nameVoll}" onblur="doHwname();" style=" width : 263px;" styleClass="Stil1"/> </td> </tr> <tr> <td class="Stil1">Titel </td> <td><h:inputText id="titel" value="#{suchhdl.person.titel}" size="40" onblur="javascript:nameAufbereiten()"/> </td> </tr> <tr> <td class="Stil1">Vorname:</td> <td><h:inputText id="vname" value="#{suchhdl.person.vorname}" size="40" onblur="nameAufbereiten();"/> </td> </tr> ...........
and last but not least my java-bean and the interface of the bean:
package src.ejb; import hwname_pd.ejb.HWname_PDBean; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.ejb.*; import javax.faces.event.ValueChangeEvent; import javax.faces.model.SelectItem; import javax.persistence.*; import org.jboss.annotation.ejb.cache.Cache; import org.jboss.seam.annotations.*; import org.jboss.seam.annotations.datamodel.DataModel; import org.jboss.seam.annotations.datamodel.DataModelSelection; import org.jboss.seam.core.FacesMessages; import org.jboss.seam.security.Identity; import src.entity.*; import src.interfaces.*; import src.klassen.PersonTmp; import static org.jboss.seam.ScopeType.SESSION; @Stateful @Name("suchhdl") @Scope(SESSION) //Verhindert das dieses Bean passiviert wird @Cache(org.jboss.ejb3.cache.NoPassivationCache.class) public class Suche implements SucheLocal { //EntityManager @PersistenceContext(unitName="asd") public EntityManager asdb; @EJB public Manager manager; public HWname_PDBean hwname = new HWname_PDBean(); @In Identity identity; @In FacesMessages facesMessages; //Variablen für die Anzeige der Person public Person person = new Person(); public PersonTmp personTmp; private String nameVoll; //Suchvariablen private String nummer; private String name; private String strasse; private String plz; private String ort; //Flagvariable um zu schauen ob sich in den Felder was geändert hat boolean feldAenderung; //Flagvariable zur Steuerung des Kunden-Auswahl-Buttons private String auswahlFlag; //Datenmodell für die Suche @DataModel private List <Person> personen; @DataModelSelection("personen") @Out (required=false) private Person selectedPerson; //************************************************************************* /** * Methode um HWname auszuführen und den Namen zu prüfen */ public boolean nameAufbereiten() { System.out.print("nameAufbereiten"); nameVoll = nameZusammensetzen(); return true; } //------------------------------------------------------------------------- /** * Methode um HWname auszuführen und den Namen zu prüfen */ public boolean doHwname(String name) { return true; } //------------------------------------------------------------------------- .......... The interface package src.interfaces; import java.util.List; import javax.ejb.*; import javax.faces.event.ValueChangeEvent; import javax.faces.model.SelectItem; import org.jboss.seam.annotations.WebRemote; import src.entity.Person; @Local public interface SucheLocal { public String suchen(); public void setNummer(String nummer); public String getNummer(); public void setName(String name); public String getName(); public void setStrasse(String strasse); public String getStrasse(); public void setPlz(String plz); public String getPlz(); public void setOrt(String ort); public String getOrt(); public List<?> getAsperreList(); public List<?> getPsperreList(); public void strtextChanged(ValueChangeEvent vce); public void destroy(); void setPerson(Person person); Person getPerson(); List<SelectItem> getAnredeList(); void setAuswahlFlag(String auswahlFlag); String getAuswahlFlag(); @WebRemote boolean doHwname(String name); void setNameVoll(String nameVoll); String getNameVoll(); @WebRemote boolean nameAufbereiten(); String reset(); }
Please help me, I search since 2 days and have no idea what the problem is.