dynamic id

Hi ,

i use a if/else statement in a for loop

but sometimes i get an Duplicate ID error

now this is my question, how can I assign an id myself, ex. from the backingbean

i am in a for loop so i would like to use the currentindex as a part of the id

ex.

for(int index=0; i<5 ; i++)

{

<%

<h:outputText id="myidwithindex" value="somevalue" />

%>

}

i tried

<h:outputText id="#{backingbean.variable}" value="somevalue" />

but that doesn't seem to work either

thx in advance

Davy

[599 byte] By [davy_van_roya] at [2007-11-27 4:59:58]
# 1
maybe worth mentioning, i only get this error after i tried to access it a few timesthe first time, i never get an error!
davy_van_roya at 2007-7-12 10:16:26 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 2
Do you actually need a custom ID? If you leave it away, then JSF will take care about it. By the way, rather populate the components in the backing bean than using a scriptlet.
BalusCa at 2007-7-12 10:16:26 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 3

well that's the problem,

normally jsf should do it, but he creates duplicate id's, now i am nog using custom id's and get this error:

javax.servlet.jsp.JspException: Duplicate component ID '_id8' found in view.

at com.sun.faces.taglib.jsf_core.ViewTag.doAfterBody(ViewTag.java:171)

at _jsf._edit._jspService(_edit.java:293)

at com.orionserver[Oracle Containers for J2EE 10g (10.1.3.1.0) ].http.OrionHttpJspPage.service(OrionHttpJspPage.java:59)

at oracle.jsp.runtimev2.JspPageTable.service(JspPageTable.java:453)

at oracle.jsp.runtimev2.JspServlet.internalService(JspServlet.java:591)

at oracle.jsp.runtimev2.JspServlet.service(JspServlet.java:515)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher

.java:711)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher

.java:368)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.unprivileged_forward(ServletRequestDispatcher

.java:259)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.access$100(ServletRequestDispatcher

.java:50)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher$2.oc4jRun(ServletRequestDispatcher

.java:193)

at oracle.oc4j.security.OC4JSecurity.doPrivileged(OC4JSecurity.java:283)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.forward(ServletRequestDispatcher

.java:198)

at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)

at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)

at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)

at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)

at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.invoke(ServletRequestDispatcher

.java:711)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.ServletRequestDispatcher.forwardInternal(ServletRequestDispatcher

.java:368)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.doProcessRequest(HttpRequestHandler

.java:866)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.processRequest(HttpRequestHandler

.java:448)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.serveOneRequest(HttpRequestHandler

.java:216)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:117)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].server.http.HttpRequestHandler.run(HttpRequestHandler.java:110)

at oracle.oc4j.network.ServerSocketReadHandler$SafeRunnable.run(ServerSocketReadHandler.java:260)

at com.evermind[Oracle Containers for J2EE 10g (10.1.3.1.0) ].util.ReleasableResourcePooledExecutor$MyWorker.run(ReleasableResourcePooledExecutor

.java:303)

at java.lang.Thread.run(Thread.java:619)

davy_van_roya at 2007-7-12 10:16:26 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 4
That's why I recommend you to gently populate components using a backing bean.
BalusCa at 2007-7-12 10:16:26 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 5
sorry, i'm new to jsf,but do you have a good tutorial to do this? thx in advance
davy_van_roya at 2007-7-12 10:16:26 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...
# 6

There are several ways. As long I know nothing about the actual requirements I can't help you in detail.

You can use a simple h:panelGroup and bind it to HtmlPanelGroup in the backing bean and add components to it. Or you can use h:dataTable to generate a table with a dynamic rowcount. Or you can use Tomahawk's t:dataList to generate a list.

BalusCa at 2007-7-12 10:16:26 > top of Java-index,Enterprise & Remote Computing,Web Tier APIs...