[jboss-user] [JBoss Seam] - Seam 1.1.0.GA with IceFaces 1.5.1 - updating existing entity

scotttam do-not-reply at jboss.com
Mon Dec 18 13:39:26 EST 2006


Seam 1.1.0.GA
Icefaces 1.5.1
JBoss-AS 4.0.5.GA
MySQL 5.0.27

I created a basic Seam application following the instructions in the Seam documentation. I have 2 simple tables in a MySQL database for testing. I ran the following commands to create the basic application:

seam setup
seam new-project
seam generate-entities

After importing into Eclipse, deploying and starting the AS, the generated application works as expected. I can see the list of existing entities, create new ones and edit existing ones. 

Now, I want to integrate with Icefaces. So, I followed the documentation from the Icefaces site:

http://support.icesoft.com/jive/servlet/KbServlet/download/623-102-847/SeamKBArticle.txt

When I redeploy, the list and creating a new entity works but selecting an existing item for update is not working. When I choose the Select link, it brings me to a page where all the fields are either 0 or empty, acting as if the id for the entity object does not exist. 

Here's my web.xml:


  | <?xml version="1.0" ?>
  | 
  | <web-app version="2.5"
  |          xmlns="http://java.sun.com/xml/ns/javaee"
  |          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  |          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  | 
  |     <context-param>
  |         <param-name>javax.faces.CONFIG_FILES</param-name>
  |         <param-value>/WEB-INF/navigation.xml</param-value>
  |     </context-param>
  |     
  |     <listener>
  |         <listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
  |     </listener>
  | 
  |     <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>
  | 
  |     <context-param>
  |         <param-name>com.icesoft.faces.actionURLSuffix</param-name>
  |         <param-value>.seam</param-value>
  |     </context-param>
  | 
  |     <context-param>
  |         <param-name>com.icesoft.faces.synchronousUpdate</param-name>
  |         <param-value>true</param-value>
  |     </context-param>
  | 
  |     <context-param>
  |         <param-name>com.icesoft.faces.doJSFStateManagement</param-name>
  |         <param-value>true</param-value>
  |     </context-param>
  | 
  |     <filter>
  |         <filter-name>Seam Exception Filter</filter-name>
  |         <filter-class>org.jboss.seam.servlet.SeamExceptionFilter</filter-class>
  |     </filter>
  | 
  |     <filter-mapping>
  |         <filter-name>Seam Exception Filter</filter-name>
  |         <url-pattern>/*</url-pattern>
  |     </filter-mapping>
  | 
  |     <servlet>
  |         <servlet-name>Faces Servlet</servlet-name>
  |         <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
  |         <load-on-startup>1</load-on-startup>
  |     </servlet>
  | 
  |   <!-- ICEFACES -->
  |   <servlet>
  |     <servlet-name>Blocking Servlet</servlet-name>
  |     <servlet-class>com.icesoft.faces.webapp.xmlhttp.BlockingServlet</servlet-class>
  |     <load-on-startup> 1 </load-on-startup>
  |   </servlet>
  | 
  |     <servlet>
  |         <servlet-name>Persistent Faces Servlet</servlet-name>
  | <servlet-class>com.icesoft.faces.webapp.xmlhttp.PersistentFacesServlet</servlet-class>
  |         <load-on-startup>1</load-on-startup>
  |     </servlet>
  | 
  |   <servlet-mapping>
  |     <servlet-name>Persistent Faces Servlet</servlet-name>
  |     <url-pattern>/xmlhttp/*</url-pattern>
  |   </servlet-mapping>
  | 
  |   <servlet-mapping>
  |     <servlet-name>Persistent Faces Servlet</servlet-name>
  |     <url-pattern>/xmlhttp/*</url-pattern>
  |   </servlet-mapping>
  | 
  |   <servlet-mapping>
  |     <servlet-name>Persistent Faces Servlet</servlet-name>
  |     <url-pattern>*.iface</url-pattern>
  |   </servlet-mapping>
  | 
  | <!-- Blocking Servlet Mapping -->
  |   <servlet-mapping>
  |     <servlet-name>Blocking Servlet</servlet-name>
  |     <url-pattern>/block/*</url-pattern>
  |   </servlet-mapping>
  |     <servlet-mapping>
  |         <servlet-name>Persistent Faces Servlet</servlet-name>
  |         <url-pattern>*.seam</url-pattern>
  |     </servlet-mapping>
  | </web-app>
  | 

faces-config.xml


  | <?xml version='1.0' encoding='UTF-8'?>
  | <!DOCTYPE faces-config PUBLIC
  |           "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  |           "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">
  | 
  | <faces-config>
  |    <application>
  |       <message-bundle>messages</message-bundle>
  |       <view-handler>com.icesoft.faces.facelets.D2DSeamFaceletViewHandler</view-handler>
  |    </application>
  | 
  |     <managed-bean>
  |         <managed-bean-name>highlight</managed-bean-name>
  |         <managed-bean-class>com.icesoft.faces.context.effects.Highlight</managed-bean-class>
  |         <managed-bean-scope>application</managed-bean-scope>
  |     </managed-bean>
  | 
  |     <managed-bean>
  |         <managed-bean-name>timeZoneBean</managed-bean-name>
  |         <managed-bean-class>com.test.par.TimeZoneBean</managed-bean-class>
  |         <managed-bean-scope>session</managed-bean-scope>
  |     </managed-bean>
  |     
  |    <!-- Seam transaction management -->
  |    <lifecycle>
  |       <phase-listener>org.jboss.seam.jsf.TransactionalSeamPhaseListener</phase-listener>
  |    </lifecycle>
  |     
  |    <!-- No Seam transaction management -->
  |    <!-- 
  |    <lifecycle>
  |       <phase-listener>org.jboss.seam.jsf.SeamPhaseListener</phase-listener>
  |    </lifecycle>
  |    -->
  | </faces-config>
  | 

I also updated the build.xml to include the icefaces jars and replacing the facelets jar with the icefaces one:


  | <?xml version="1.0"?>
  | 
  | <project name="myproject" default="deploy" basedir=".">
  | 
  | 	<!-- Give user a chance to override without editing this file or typing -D -->
  | 	<property file="${basedir}/build.properties" />
  | 
  | 	<!-- set global properties for this build -->
  | 	<property name="project.name" value="myproject"/>
  | 	<property name="dist.dir" value="dist" />
  | 	<property name="src.java.dir" value="src" />
  | 	<property name="lib.dir" value="lib" />
  | 	<property name="ear.dir" value="exploded-archives/${project.name}.ear" />
  | 	<property name="jar.dir" value="exploded-archives/${project.name}.jar" />
  | 	<property name="war.dir" value="exploded-archives/${project.name}.war" />
  | 	<property name="test.dir" value="build/test" />
  | 	<property name="embedded-ejb3.dir" value="${basedir}/embedded-ejb/conf" />
  | 	<property name="deploy.dir" value="${jboss.home}/server/default/deploy" />
  | 	<property name="ear.deploy.dir" value="${deploy.dir}/${project.name}.ear" />
  | 	<property name="jar.deploy.dir" value="${ear.deploy.dir}/${project.name}.jar" />
  | 	<property name="war.deploy.dir" value="${ear.deploy.dir}/${project.name}.war" />
  | 	<property name="testng.jar" value="${basedir}/lib/testng-4.5.1-jdk15.jar" />
  | 	<property name="javac.debug" value="true" />
  | 	<property name="javac.deprecation" value="false" />
  | 
  | 	<fileset id="lib" dir="${lib.dir}">
  | 		<include name="*.jar" />
  | 	</fileset>
  | 
  | 	<path id="build.classpath">
  | 		<fileset refid="lib" />
  | 	</path>
  | 
  | 	<target name="init" description="Initialize the build">
  | 		<mkdir dir="${jar.dir}" />
  | 		<mkdir dir="${ear.dir}" />
  | 		<mkdir dir="${war.dir}" />
  | 		<mkdir dir="${dist.dir}" />
  | 	</target>
  | 
  | 	<target name="compile" depends="init" 
  | 			description="Compile the Java source code" 
  | 			unless="eclipse.running">
  | 		<javac classpathref="build.classpath" 
  | 			        destdir="${jar.dir}" 
  | 			          debug="${javac.debug}" 
  | 			    deprecation="${javac.deprecation}" 
  | 			        nowarn="on">
  | 			<src path="${src.java.dir}" />
  | 		</javac>
  | 	</target>
  | 
  | 	<target name="jar" depends="compile" 
  | 			description="Build the distribution .jar file">
  | 		<copy todir="${jar.dir}">
  | 			<fileset dir="${basedir}/resources">
  | 				<include name="seam.properties" />
  | 				<include name="import.sql" />
  | 			</fileset>
  | 		</copy>
  | 		<copy todir="${jar.dir}/META-INF">
  | 			<fileset dir="${basedir}/resources/META-INF">
  | 				<include name="ejb-jar.xml" />
  | 				<include name="persistence.xml" />
  | 			</fileset>
  | 		</copy>
  | 	</target>
  | 
  | 	<target name="war" depends="compile" 
  | 			description="Build the distribution .war file">
  | 		<copy todir="${war.dir}">
  | 			<fileset dir="${basedir}/view" />
  | 		</copy>
  | 		<copy todir="${war.dir}/WEB-INF">
  | 			<fileset dir="${basedir}/resources/WEB-INF">
  | 				<include name="*.*"/>
  | 				<include name="classes/**/*.*"/>
  | 				<exclude name="classes/**/*.class"/>
  | 			</fileset>
  | 			<filterset>
  | 				<filter token="jndiPattern" value="${project.name}/#{ejbName}/local" />
  | 				<filter token="embeddedEjb" value="false" />
  | 			</filterset>
  | 		</copy>		
  | 		<copy todir="${war.dir}/WEB-INF">
  | 			<fileset dir="${basedir}/resources/WEB-INF">
  | 				<include name="lib/*.*"/>
  | 				<include name="classes/**/*.class"/>
  | 			</fileset>
  | 		</copy>		
  | 		<copy todir="${war.dir}/WEB-INF/lib">
  | 			<fileset dir="${lib.dir}">
  | 				<include name="icefaces.jar" />
  | 				<include name="icefaces-comps.jar" />
  | 				<include name="icefaces-facelets.jar" />
  | 				<include name="el-api.jar" />
  | 				<include name="el-ri.jar" />
  | 				<include name="jboss-seam-debug.jar" />
  | 				<include name="jboss-seam-ui.jar" />
  | 			</fileset>			
  | 		</copy>
  | 		<copy todir="${war.dir}/WEB-INF/classes">
  | 			<fileset dir="${basedir}/resources"> 
  | 				<include name="messages*.properties"/>
  | 			</fileset>
  | 		</copy>
  | 	</target>
  | 
  | 	<target name="ear" description="Build the EAR">
  | 		<copy todir="${ear.dir}">
  | 			<fileset dir="${basedir}/resources">
  | 				<include name="*jpdl.xml" />
  | 				<include name="hibernate.cfg.xml" />
  | 				<include name="jbpm.cfg.xml" />
  | 			</fileset>
  | 			<fileset dir="${lib.dir}">
  | 				<include name="jboss-seam.jar" />
  | 				<include name="jbpm*.jar" />
  | 				<include name="el-*.jar" />
  | 			</fileset>
  | 		</copy>
  | 		<copy todir="${ear.dir}/META-INF">
  | 			<fileset dir="${basedir}/resources/META-INF">
  | 				<include name="application.xml" />
  | 				<include name="jboss-app.xml" />
  | 			</fileset>
  | 		</copy>
  | 	</target>
  | 	
  | 	<target name="archive" depends="jar,war,ear" 
  | 			description="Package the archives">
  | 		<jar jarfile="${dist.dir}/${project.name}.jar" basedir="${jar.dir}"/>
  | 		<jar jarfile="${dist.dir}/${project.name}.war" basedir="${war.dir}"/>
  | 		<jar jarfile="${dist.dir}/${project.name}.ear">
  | 			<fileset dir="${ear.dir}"/>
  | 			<fileset dir="${dist.dir}">
  | 				<include name="${project.name}.jar"/>
  | 				<include name="${project.name}.war"/>
  | 			</fileset>
  | 		</jar>
  | 	</target>
  | 	
  | 	<target name="datasource">
  | 		<fail unless="jboss.home">jboss.home not set</fail>
  | 		<copy todir="${deploy.dir}">
  | 			<fileset dir="${basedir}/resources">
  | 				<include name="${project.name}-ds.xml" />
  | 			</fileset>
  | 		</copy>
  | 	</target>
  | 	
  | 	<target name="explode" depends="jar,war,ear,datasource" 
  | 			description="Deploy the exploded archive">
  | 		<fail unless="jboss.home">jboss.home not set</fail>
  | 		
  | 		<mkdir dir="${jar.deploy.dir}"/>
  | 		<mkdir dir="${war.deploy.dir}"/>		
  | 		
  | 		<copy todir="${jar.deploy.dir}">
  | 			<fileset dir="${jar.dir}"/>
  | 		</copy>
  | 		<copy todir="${war.deploy.dir}">
  | 			<fileset dir="${war.dir}"/>
  | 		</copy>
  | 		<copy todir="${ear.deploy.dir}">
  | 			<fileset dir="${ear.dir}"/>
  | 		</copy>
  | 	</target>
  | 
  | 	<target name="unexplode" description="Undeploy the exploded archive">
  | 		<delete failonerror="no">
  | 			<fileset dir="${ear.deploy.dir}">
  | 				<exclude name="**/*.jar"/>
  | 			</fileset>
  | 		</delete>
  | 		<delete file="${deploy.dir}/${project.name}-ds.xml" failonerror="no"/>
  | 		<delete dir="${ear.deploy.dir}" failonerror="no"/>
  | 	</target>
  | 	
  | 	<target name="restart" depends="explode" description="Restart the exploded archive">
  | 		<touch file="${ear.deploy.dir}/META-INF/application.xml"/>
  | 	</target>
  | 
  | 	<target name="deploy" depends="archive,datasource" description="Deploy to JBoss AS">
  | 		<fail unless="jboss.home">jboss.home not set</fail>
  | 		<copy todir="${deploy.dir}" file="${dist.dir}/${project.name}.ear" />
  | 	</target>
  | 
  | 	<target name="undeploy" description="Undeploy the example from JBoss">
  | 		<delete file="${deploy.dir}/${project.name}.ear" />
  | 		<delete file="${deploy.dir}/${project.name}-ds.xml" />
  | 	</target>
  | 
  | 	<target name="clean" description="Cleans up the build directory">
  | 		<delete dir="${dist.dir}" />
  | 		<delete dir="${test.dir}" />
  | 		<delete dir="${ear.dir}" />
  | 		<delete dir="${war.dir}" />
  | 		<delete>
  | 			<fileset dir="${jar.dir}">
  | 				<exclude name="**/*.class" if="eclipse.running"/>
  | 			</fileset>
  | 		</delete>
  | 	</target>
  | 
  | 	<target name="test" depends="jar,war,ear" description="Run the tests">
  | 
  | 		<taskdef resource="testngtasks" classpath="${testng.jar}" />
  | 		<copy todir="${test.dir}">
  | 			<fileset dir="${basedir}/resources" />
  | 			<fileset dir="${jar.dir}" />
  | 		</copy>
  | 
  | 		<copy todir="${test.dir}/WEB-INF">
  | 			<fileset dir="${war.dir}/WEB-INF">
  | 				<exclude name="**/*.jar" />
  | 			</fileset>
  | 		</copy>
  | 
  | 		<copy todir="${test.dir}" flatten="true">
  | 			<fileset dir="${src.java.dir}">
  | 				<include name="**/*Test.xml" />
  | 			</fileset>
  | 		</copy>
  | 
  | 		<testng outputdir="${basedir}/testng-report">
  | 			<classpath path="${test.dir}" />
  | 			<classpath path="${embedded-ejb3.dir}" />
  | 			<classpath refid="build.classpath" />
  | 			<xmlfileset dir="${test.dir}" includes="*Test.xml" />
  | 		</testng>
  | 		
  | 	</target>
  | 	
  | </project>
  | 


Any ideas? 

View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3994761#3994761

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3994761



More information about the jboss-user mailing list