Hello.

I'm having trouble making a *select based on CustomTOs.*

I explain myself:

I have three entities:
- *User*(idUser, name, surname, phone,...)
- *Proyect*(idProyect, name, city,....)
- *Member*(idMember, idUser, idProyect, ...)

I want to* make a select using user.name as label and member.idMember as
value.*
I took a look to:
http://wiki.apache.org/tapestry/Tapestry5HowtoSelectWithObjects

Now, I have the following:
- *MemberCTO(idMember, name)*, with a public Constructor, and getters &
setters for idMember, name

--------------------------
On the page (.tml) I have:
<div class="field">
 <t:label for="memberCTO"/>
<span class="entry">
 <t:select t:id="memberCTO" model="membersCTO" encoder="membersCTO"
value="memberCTO" t:validate="required"/>
 </span>
</div>
--------------------------
On the page (.java) I have
...
@Persist @Property private memberCTO memberCTO;
private GenericSelectModel<memberCTO> membersCTO;
public  GenericSelectModel<memberCTO> getmembersCTO(){
return membersCTO;
}
....
void setupRender() {
membersCTO = new GenericSelectModel<memberCTO>
(memberDao.findUsersInProyect( fase.getProyecto().getIdProyecto()),
 memberCTO.class, "name", "idMember", _access);
}
The source code of GenericSelectModel was obtained from:
http://wiki.apache.org/tapestry/Tapestry5HowtoSelectWithObjects


I try to load the page, and I get an error (you can see it at the end).

I debugged the code, and I can say:
- membersCTO contains an ArrayList<MemberCTO> with the data obtained form
the DB.
- GenericSelectModel, establish (at the Constructor):
      - idFieldAdapter...: PropertyAdarptedImpl..... name='idMember'
      - labelFieldAdapter: PropertyAdarptedImpl..... name='name'
      (I think its correct)
- List<OptionModel> getOptions() {} (Inside GenericSelectModel class)
for (T obj : list) {
 optionModelList.add(new OptionModelImpl(nvl(labelFieldAdapter.get(obj)),
obj));
}
 Generate an exception.
 Particularlly: labelFieldAdapter.get(obj) doesnt work:
 obj:
Object[2]  (id=438)
 *[0]** *Long  (id=445)
 value 6
*[1]* "admin" (id=446)
 count 5
hash 0
 offset 0
value (id=447)

 Exception: java.lang.RuntimeException: Error reading property 'name' of
[Ljava.lang.Object;@1890909: object is not an instance of declaring class



ERROR:
-----------------------------

An unexpected application exception has occurred.

org.apache.tapestry5.internal.services.RenderQueueException
Render queue error in BeforeRenderTemplate[project/Task:miembrocto]: Error
reading property 'name' of [Ljava.lang.Object;@191e550: object is not an
instance of declaring class
 ....
....
<t:select t:id="memberCTO" model="membersCTO" encoder="membersCTO"
value="memberCTO" t:validate="required"/>
....
....
location
classpath:serviguide/inludes/proyectos/web/pages/project/Task.tml, line 81
java.lang.IllegalArgumentException
object is not an instance of declaring class
Hide uninteresting stack frames Stack trace
java.lang.reflect.Method.invoke(Method.java:597)
org.apache.tapestry5.ioc.internal.services.PropertyAdapterImpl.get(PropertyAdapterImpl.java:96)
serviguide.inludes.proyectos.web.util.GenericSelectModel.getOptions(GenericSelectModel.java:68)
org.apache.tapestry5.util.AbstractSelectModel.visit(AbstractSelectModel.java:46)
org.apache.tapestry5.corelib.components.Select.options(Select.java:236)
org.apache.tapestry5.corelib.components.Select.beforeRenderTemplate(Select.java)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.invokeComponent(ComponentPageElementImpl.java:253)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.run(ComponentPageElementImpl.java:164)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.invoke(ComponentPageElementImpl.java:941)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$400(ComponentPageElementImpl.java:49)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$AbstractPhase.callback(ComponentPageElementImpl.java:159)
org.apache.tapestry5.internal.structure.ComponentPageElementImpl$BeforeRenderTemplatePhase.render(ComponentPageElementImpl.java:258)
org.apache.tapestry5.internal.services.RenderQueueImpl.run(RenderQueueImpl.java:74)
org.apache.tapestry5.internal.services.PageRenderQueueImpl.render(PageRenderQueueImpl.java:121)
org.apache.tapestry5.internal.services.MarkupRendererTerminator.renderMarkup(MarkupRendererTerminator.java:37)
org.apache.tapestry5.services.TapestryModule$27.renderMarkup(TapestryModule.java:1748)
org.apache.tapestry5.services.TapestryModule$26.renderMarkup(TapestryModule.java:1732)
org.apache.tapestry5.services.TapestryModule$25.renderMarkup(TapestryModule.java:1714)
org.apache.tapestry5.services.TapestryModule$24.renderMarkup(TapestryModule.java:1700)
org.apache.tapestry5.services.TapestryModule$23.renderMarkup(TapestryModule.java:1681)
org.apache.tapestry5.services.TapestryModule$22.renderMarkup(TapestryModule.java:1662)
org.apache.tapestry5.internal.services.PageMarkupRendererImpl.renderPageMarkup(PageMarkupRendererImpl.java:64)
org.apache.tapestry5.internal.services.PageResponseRendererImpl.renderPageResponse(PageResponseRendererImpl.java:61)
org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl.handle(PageRenderRequestHandlerImpl.java:63)
org.apache.tapestry5.services.TapestryModule$33.handle(TapestryModule.java:1943)
serviguide.inludes.proyectos.web.services.PageRenderAuthenticationFilter.handle(PageRenderAuthenticationFilter.java:41)
org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handlePageRender(ComponentRequestHandlerTerminator.java:48)
org.apache.tapestry5.internal.services.PageRenderDispatcher.dispatch(PageRenderDispatcher.java:45)
org.apache.tapestry5.services.TapestryModule$RequestHandlerTerminator.service(TapestryModule.java:245)
org.apache.tapestry5.internal.services.RequestErrorFilter.service(RequestErrorFilter.java:26)
org.apache.tapestry5.services.TapestryModule$4.service(TapestryModule.java:778)
org.apache.tapestry5.services.TapestryModule$3.service(TapestryModule.java:767)
org.apache.tapestry5.internal.services.StaticFilesFilter.service(StaticFilesFilter.java:85)
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:90)
org.apache.tapestry5.internal.services.CheckForUpdatesFilter$2.invoke(CheckForUpdatesFilter.java:81)
org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier.withRead(ConcurrentBarrier.java:85)
org.apache.tapestry5.internal.services.CheckForUpdatesFilter.service(CheckForUpdatesFilter.java:103)
org.apache.tapestry5.services.TapestryModule$HttpServletRequestHandlerTerminator.service(TapestryModule.java:197)
org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter.service(MultipartServletRequestFilter.java:44)
org.apache.tapestry5.internal.gzip.GZipFilter.service(GZipFilter.java:53)
org.apache.tapestry5.internal.services.IgnoredPathsFilter.service(IgnoredPathsFilter.java:62)
org.apache.tapestry5.services.TapestryModule$2.service(TapestryModule.java:726)
org.apache.tapestry5.TapestryFilter.doFilter(TapestryFilter.java:127)

-- 
Santiago Wenceslao Fernández Lorenzo
www.santiquetzal.es

Reply via email to