[jboss-user] [JBoss Seam] - What am I doing wrong - nested Set in a h:dataTable

henrik.lindberg do-not-reply at jboss.com
Fri Mar 30 21:48:03 EDT 2007


This is what I have in my view:

  | 			<h:outputText value="Count = #{cspecInfo.attributeCount}" />
  | 			<h:dataTable value="#{cspecInfo.componentAttributes}" var="attr"
  | 				rows="25" >
  | 				<h:column>
  | 					<h:outputText value="#{attr.name}" />
  | 				</h:column>
  | 			</h:dataTable>	
  | 
The cspecInfo refers to an Entity that has a Set that is obtained as the value. (The output above refers to a transient attribute in the Entity bean (attributeCount). 

I get the correct count as output. So I know I have things in the set.
When I try to render the #{attr.name} I get the following error:

  | ALLVARLIG: Error Rendering View[/cspec-view.xhtml]
  | javax.faces.el.PropertyNotFoundException: /cspec-view.xhtml @113,43 value="#{attr.name}": Bean: org.hibernate.collection.PersistentSet, property: name
  |         at com.sun.facelets.el.LegacyValueBinding.getValue(LegacyValueBinding.java:58)
  |         at javax.faces.component.UIOutput.getValue(UIOutput.java:77)
  |         at org.apache.myfaces.shared_impl.renderkit.RendererUtils.getStringValue(RendererUtils.java:217)
  |         at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.renderOutput(HtmlTextRendererBase.java:69)
  |         at org.apache.myfaces.shared_impl.renderkit.html.HtmlTextRendererBase.encodeEnd(HtmlTextRendererBase.java:57)
  |         at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:536)
  |         at org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:442)
  |         at org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChildren(RendererUtils.java:419)
  |         at org.apache.myfaces.shared_impl.renderkit.RendererUtils.renderChild(RendererUtils.java:440)
  |         at org.apache.myfaces.shared_impl.renderkit.html.HtmlTableRendererBase.renderColumnBody(HtmlTableRendererBase.java:332)
  |         at org.apache.myfaces.shared_impl.renderkit.html.HtmlTableRendererBase.encodeColumnChild(HtmlTableRendererBase.java:301)
  |         at org.apache.myfaces.shared_impl.renderkit.html.HtmlTableRendererBase.encodeInnerHtml(HtmlTableRendererBase.java:277)
  |         at org.apache.myfaces.shared_impl.renderkit.html.HtmlTableRendererBase.encodeChildren(HtmlTableRendererBase.java:123)
  |         at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:524)
  |         at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:244)
  |         at com.sun.facelets.tag.jsf.ComponentSupport.encodeRecursive(ComponentSupport.java:249)
  |         at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:573)
  |         at org.ajax4jsf.framework.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:101)
  |         at org.ajax4jsf.framework.ajax.AjaxViewHandler.renderView(AjaxViewHandler.java:222)
  |         at org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:384)
  |         at javax.faces.webapp.FacesServlet.service(FacesServlet.java:138)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:63)
  |         at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:57)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:79)
  |         at org.jboss.seam.web.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:49)
  |         at org.jboss.seam.web.SeamFilter.doFilter(SeamFilter.java:84)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.ajax4jsf.framework.ajax.xmlfilter.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:75)
  |         at org.ajax4jsf.framework.ajax.xmlfilter.BaseFilter.doFilter(BaseFilter.java:213)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  |         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
  |         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
  |         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
  |         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
  |         at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:175)
  |         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:432)
  |         at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:74)
  |         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
  |         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
  |         at org.jboss.web.tomcat.tc5.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:156)
  |         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
  |         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
  |         at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
  |         at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
  |         at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
  |         at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
  |         at java.lang.Thread.run(Thread.java:619)
  | 

ComponentAttribute does have the attribute "name".
If I ouput something else - like static string - I get one row per object in the set (with the fixed string).

This is what the parent (what cspecInfo refers to) has as definition:

  | 	private Set<ComponentAttribute> m_componentAttributes;
  | 	@OneToMany(mappedBy="spec")
  | 	public Set<ComponentAttribute> getComponentAttributes()
  | 	{
  | 		return m_componentAttributes;
  | 	}
  | 	public void setComponentAttributes(Set<ComponentAttribute> attributes)
  | 	{
  | 		m_componentAttributes = attributes;
  | 	}
  | 	@Transient 
  | 	public String getAttributeCount()
  | 	{
  | 		if(m_componentAttributes == null)
  | 			return "0";
  | 		return new Integer(m_componentAttributes.size()).toString();
  | 	}
  | 
And the corresponding part in the detail entity looks like this:

  | 	private ComponentSpec m_spec;
  | 
  | 	@NotNull
  | 	@Length(min = 1, max = 100)
  | 	@Column(unique = true)
  | 	public String getName()
  | 	{
  | 		return m_name;
  | 	}
  | 
(it has an id column called 'cattr_id')

So - what am I doing wrong? 
Should I access the data some other way?

Regards
- henrik

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

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



More information about the jboss-user mailing list