Unless you're doing this purely for educational purposes, I'd recommend dropping the custom tag approach. Just have your "tmsBean" expose the results of the database query as a collection (does the getRecords method already do that?) and use <c:forEach> to iterate through it and render the <option> elements.
Quoting Sven Lösekann <[EMAIL PROTECTED]>: > Hello, > > I am trying to develop my own tags. I do not know if this is the right place > to ask but I hope so. The Tag I am developing should read string from a db > and put it in a <select> box on the page. I just can not get it to work and > I am running out of ideas. Please tell me what I am doing wrong. I really > need this code to run. Here comes my code: > > package tags; > > import javax.servlet.jsp.*; > > import javax.servlet.jsp.tagext.*; > > import dataconn.*; > > /** > > * @author Loesekann > > * > > * To change the template for this generated type comment go to > > * Window>Preferences>Java>Code Generation>Code and Comments > > */ > > public class DBCombobox extends TagSupport { > > private String colum = null; > > private String table = null; > > private String name = null; > > private String css_class = null; > > private String def_str = null; > > public DBCombobox() { > > super(); > > } > > /** > > * doStartTag is called by the JSP container when the tag is encountered > > */ > > public int doStartTag() { > > try { > > System.out.println("Tag Start\n"); > > JspWriter page = pageContext.getOut(); > > page.println("<select size=\"1\" name=" +name+ " class=" +css_class+ ">"); > > page.println("<option value=''></option>"); > > tmsDataBean tmsBean = (tmsDataBean)pageContext.findAttribute("tmsBean"); > > tmsBean.setQuery("select distinct " +colum+ " from " +table); > > if(tmsBean.getRecords()){ > > String Value = null; > > while(tmsBean.getNextRecord()){ > > Value=tmsBean.getColumn(colum); > > page.print("<option value='" +Value+"' "); > > if(def_str.equals(Value)) > > page.print(" selected "); > > page.print(">" +Value+ "</option>"); > > } > > tmsBean.cleanup(); > > } > > }catch(Exception e) { > > System.out.println("doStartTag Exception.\n"); > > e.printStackTrace(); > > } > > //Must return SKIP_BODY because we are not supporting a body for this > > // tag. > > return SKIP_BODY; > > } > > > /** > > * doEndTag is called by the JSP container when the tag is closed > > */ > > public int doEndTag(){ > > try { > > JspWriter out = pageContext.getOut(); > > out.println("</select>"); > > } catch (Exception e){ > > System.out.println("doEndTag Exception"); > > e.printStackTrace(); > > } > > return EVAL_PAGE; > > } > > /** > > * @return > > */ > > public String getColum() { > > return colum; > > } > > /** > > * @return > > */ > > public String getCss_class() { > > return css_class; > > } > > /** > > * @return > > */ > > public String getDef_str() { > > return def_str; > > } > > /** > > * @return > > */ > > public String getName() { > > return name; > > } > > /** > > * @return > > */ > > public String getTable() { > > return table; > > } > > /** > > * @param string > > */ > > public void setColum(String string) { > > colum = string; > > } > > /** > > * @param string > > */ > > public void setCss_class(String string) { > > css_class = string; > > } > > /** > > * @param string > > */ > > public void setDef_str(String string) { > > def_str = string; > > } > > /** > > * @param string > > */ > > public void setName(String string) { > > name = string; > > } > > /** > > * @param string > > */ > > public void setTable(String string) { > > table = string; > > } > > } > > > > The TLD file looks like this: > > <?xml version="1.0" encoding="ISO-8859-1" ?> > > <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library > 1.1//EN" > > "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> > > <taglib> > > <tlibversion>1.0</tlibversion> > > <jspversion>1.1</jspversion> > > <shortname>tmstaglib</shortname> > > <info>Trinity Tag Libary for eTMS</info> > > <!--A Simple tag --> > > <tag> > > <name>dbcombobox</name> > > <tagclass>tags.DBCombobox</tagclass> > > <!--Body content can have a value of > > empty: no body > > JSP: body that is evaluated by container, then possibly processed by the tag > > tagdependent: body is only processed by tag; JSP in body is not evaluated. > > --> > > <bodycontent>empty</bodycontent> > > <info>This this combobox tag gets its lines from a db query.</info> > > <!-- Optional attributes --> > > <attribute> > > <name>colum</name> > > <required>true</required> > > <rtexprvalue>true</rtexprvalue> > > </attribute> > > <attribute> > > <name>table</name> > > <required>true</required> > > <rtexprvalue>true</rtexprvalue> > > </attribute> > > <attribute> > > <name>name</name> > > <required>true</required> > > <rtexprvalue>false</rtexprvalue> > > </attribute> > > <attribute> > > <name>css_class</name> > > <required>true</required> > > <rtexprvalue>true</rtexprvalue> > > </attribute> > > <attribute> > > <name>def_str</name> > > <required>true</required> > > <rtexprvalue>true</rtexprvalue> > > </attribute> > > </tag> > > </taglib> > > > > My web.xml looks like this: > > <?xml version="1.0" encoding="ISO-8859-1"?> > <!DOCTYPE web-app PUBLIC > "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" > "http://java.sun.com/dtd/web-app_2_3.dtd" > > > <web-app> > <context-param> > <param-name>ENGLISH</param-name> > <param-value>TRINITY - eTMS - Financial-Management WORLDWIDE > </param-value> > </context-param> > <context-param> > <param-name>GERMAN</param-name> > <param-value>TRINITY - eTMS - Financial-Management WORLDWIDE > </param-value> > </context-param> > <context-param> > <param-name>FRENCH</param-name> > <param-value>TRINITY - eTMS - Financial-Management WORLDWIDE > </param-value> > </context-param> > <context-param> > <param-name>SMALL_LOGO</param-name> > <param-value>images/logo_small.gif</param-value> > </context-param> > <context-param> > <param-name>SMALL_LOGO_WIDTH</param-name> > <param-value>30</param-value> > </context-param> > <context-param> > <param-name>SMALL_LOGO_HEIGHT</param-name> > <param-value>27</param-value> > </context-param> > <taglib> > <taglib-uri>/tags/tmstaglib</taglib-uri> > <taglib-location>/WEB-INF/tmstaglib.tld</taglib-location> > </taglib> > </web-app> > > > and in the jsp I inserted this: > > <%@ taglib uri="/tags/tmstaglib" prefix="tmstl" %> > > <td> > > <tmstl:dbcombobox colum="siso" table="TMS_FPVIKLP" name="chf" > css_class="selectboxSmall" def_str="<%=chf%>" /> > > </td> > > > > The Error Message of Tomcat 4.1.27 is: > > java.lang.NoClassDefFoundError: javax/servlet/jsp/JspContext > at java.lang.Class.getDeclaredMethods0(Native Method) > at java.lang.Class.privateGetDeclaredMethods(Class.java:1647) > at java.lang.Class.getDeclaredMethods(Class.java:1131) > at java.beans.Introspector$1.run(Introspector.java:1126) > at java.security.AccessController.doPrivileged(Native Method) > at java.beans.Introspector.getPublicDeclaredMethods(Introspector.java:1124) > at java.beans.Introspector.getTargetMethodInfo(Introspector.java:989) > at java.beans.Introspector.getBeanInfo(Introspector.java:370) > at java.beans.Introspector.getBeanInfo(Introspector.java:144) > at > org.apache.jasper.compiler.Generator$TagHandlerInfo.(Generator.java:1946) > at > org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:10 > 93) > at org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:707) > at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1028) > at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:1070) > at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:1076) > at org.apache.jasper.compiler.Node$Root.accept(Node.java:232) > at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:1028) > at org.apache.jasper.compiler.Generator.generate(Generator.java:1917) > at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:242) > at org.apache.jasper.compiler.Compiler.compile(Compiler.java:369) > at > org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:4 > 73) > at > org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:1 > 90) > at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295) > at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:853) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application > FilterChain.java:247) > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh > ain.java:193) > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja > va:256) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok > eNext(StandardPipeline.java:643) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja > va:191) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok > eNext(StandardPipeline.java:643) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416) > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180 > ) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok > eNext(StandardPipeline.java:643) > at > org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve. > java:171) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok > eNext(StandardPipeline.java:641) > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172 > ) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok > eNext(StandardPipeline.java:641) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java > :174) > at > org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok > eNext(StandardPipeline.java:643) > at > org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480) > at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995) > at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223) > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601) > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConne > ction(Http11Protocol.java:392) > at > org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565) > at > org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav > a:619) > at java.lang.Thread.run(Thread.java:534) -- Kris Schneider <mailto:[EMAIL PROTECTED]> D.O.Tech <http://www.dotech.com/> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]