More newbie GET problems
nynymike Aug 20, 2007 7:37 AMI'm completely bamboozled by this.... I had my GET parameters working, but I had to change the primary key of my db from "id" to "uniqueid" After I made the change, five hours later, nothing works. I even tried re-building a completely new project. I'm using Seam 1.2.1 and JBoss 4.0.5
My components.xml factory/Home looks like this
<factory name="account" value="#{accountDao.instance}"/> <fwk:entity-home name="accountDao" entity-class="us.ziacom.vm.model.Account"> <fwk:created-message> New account #{account.mailbox} created </fwk:created-message> <fwk:deleted-message> Account #{account.mailbox} deleted </fwk:deleted-message> <fwk:updated-message> Account #{account.mailbox} updated </fwk:updated-message> </fwk:entity-home>
My pages.xml looks like this:
<page view-id="/viewAccount.xhtml"> <param name="id" value="#{accountDao.uniqueid}" converterId="javax.faces.Long"/> </page> <page view-id="/confirmDelete.xhtml"> <param name="id" value="#{accountDao.uniqueid}" converterId="javax.faces.Long"/> <navigation> <rule if-outcome="removed"> <redirect view-id="/home.xhtml"/> </rule> </navigation> </page> <page view-id="/accountForm.xhtml"> converterId="javax.faces.Long"/> <navigation> <rule if-outcome="updated"> <redirect view-id="/viewAccount.xhtml"/> </rule> <rule if-outcome="persisted"> <redirect view-id="/viewAccount.xhtml"/> </rule> </navigation> </page>
The entity bean looks like this:
@Entity @Table(name = "account", catalog = "asterisk") public class Account implements java.io.Serializable { private long uniqueid; [...] @Id @Column(name = "uniqueid", unique = true, nullable = false) @NotNull public long getUniqueid() { return this.uniqueid; } public void setUniqueid(long uniqueid) { this.uniqueid = uniqueid; } [...]
This appears to be just a problem with SEAM finding the uniqueid parameter in pages.xml. This code generates the link perfectly, using the same entity home object. When you click on this link, you get the error:
<s:link view="/viewAccount.xhtml" value="#{acct.mailbox}"> <f:param name="id" value="#{acct.uniqueid}"/> </s:link>
Here is the SQL for the table
CREATE TABLE `account` ( `uniqueid` bigint(20) NOT NULL auto_increment, `customer_id` varchar(11) NOT NULL default '0', `context` varchar(50) NOT NULL default 'consumer', `mailbox` varchar(32) NOT NULL default '0', `password` varchar(4) NOT NULL default '0', `fullname` varchar(50) NOT NULL default '', `email` varchar(50) NOT NULL default '', `pager` varchar(50) NOT NULL default '', `stamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `attach` varchar(4) NOT NULL default 'yes', `deletevoicemail` varchar(4) NOT NULL default 'yes', `maxgreet` varchar(6) NOT NULL default '60', `maxmessage` varchar(6) NOT NULL default '180', `userpassword` varchar(128) NOT NULL default 'password', `callerid` varchar(32) default NULL, `announcemode` varchar(4) NOT NULL default 'no', `status` varchar(12) NOT NULL default 'inactive' COMMENT 'active | inactive | suspended | pending', PRIMARY KEY (`uniqueid`), KEY `mailbox_context` (`mailbox`,`context`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
The error I am getting is
Exception during request processing: javax.faces.el.PropertyNotFoundException: Bean: org.jboss.seam.framework.EntityHome_$$_javassist_3, property: uniqueid org.apache.myfaces.el.PropertyResolverImpl.getPropertyDescriptor(PropertyResolverImpl.java:483) org.apache.myfaces.el.PropertyResolverImpl.getPropertyDescriptor(PropertyResolverImpl.java:454) org.apache.myfaces.el.PropertyResolverImpl.setProperty(PropertyResolverImpl.java:385) org.apache.myfaces.el.PropertyResolverImpl.setValue(PropertyResolverImpl.java:173) org.apache.myfaces.el.ValueBindingImpl.setValue(ValueBindingImpl.java:275) org.jboss.seam.core.Expressions$1.setValue(Expressions.java:93) org.jboss.seam.core.Pages.applyViewRootValues(Pages.java:665) org.jboss.seam.core.Pages.applyRequestParameterValues(Pages.java:646) org.jboss.seam.jsf.AbstractSeamPhaseListener.afterRestoreView(AbstractSeamPhaseListener.java:73) org.jboss.seam.jsf.SeamPhaseListener.afterPhase(SeamPhaseListener.java:95) org.apache.myfaces.lifecycle.PhaseListenerManager.informPhaseListenersAfter(PhaseListenerManager.java:89) org.apache.myfaces.lifecycle.LifecycleImpl.restoreView(LifecycleImpl.java:181) org.apache.myfaces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:66) javax.faces.webapp.FacesServlet.service(FacesServlet.java:137) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63) org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57) org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) org.jboss.seam.debug.hot.HotDeployFilter.doFilter(HotDeployFilter.java:60) org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79) org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49) org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:96) org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:220) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178) org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432) org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74) org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156) org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869) org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664) org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527) org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112) java.lang.Thread.run(Thread.java:619)
Please help before I need to get committed somewhere !
- Mike