Custom tags v/s java beans

Hi all,
Is there any thumb rule when to use Custom Tag and when to use Java Beans.
I feel we can get the solution using either of them.
Am I right?
Cheers

Hi all,
Is there any thumb rule when to use Custom Tag and
when to use Java Beans.
I feel we can get the solution using either of them.
Am I right?
Usually you can indeed use either. Custom tags will create cleaner JSPs with less (if any) Java code, which makes it a lot easier for non-Java people to maintain them.
Custom beans are often quicker to create, and therefore better suited as interim solutions or for pages that won't be around for long (maybe that one-time action?).
Of course custom tags will often also make use of beans :)

Similar Messages

  • How to use a variable of jsp custom tag in my java code?

    hi folks,
    i got a folderList tag like this:
    ArrayList list = new ArrayList(20);
    %>
    <foo:folderList path="${attributes.newsPath}" var="year" contentType="folder">
    <%
              list.add(${year.contentEntryName});   // of course, this doesn't work
    %>
    </foo:folderList>I think, its clear what I want to do. I am just wondering how I can use my Variable "year" in the Java code between <% %>...

    <% list.add(year.getContentEntryName()); %>
    You have to have defined in the custom tag that "var" relates to a scripting variable that you want defined.
    <tag>
      <variable>
        <name-given>var</name-given>
        <variable-class>myPackage.myClass</variable-class>
        <declare>true</declare>
        <scope>NESTED</scope>
      </variable>
    </tag> Cheers,
    evnafets

  • Custom tags or Custom Beans

    In a web application project using model 2 to encapsulate layers of application which one is batter
    jsp tags or javabeans ?
    What do u thing about their advantages and disadvantages. Because i think that both are reuseable and platform independent. Thanks for all comments.

    hmm .. maybe I should describe my problem a little more in detail.
    Let's say I have a servlet CheckServlet, a Custom Tag CheckTag, a java bean CheckBean
    If I place the classes in WEB-INF/classes folder, tomcat cannot find the CheckTag class. Same thing with the javabean.
    The moment I make the CustomTag class a part of Check package and place the class file in the folder WEB-INF/classes/Check, it will work. I have noticed the same behaviour with javabeans.
    I had a look at the _jsp file that is generated. The line CheckBean check = null; is where the exception is thrown. (check, I am assuming, is the bean name in the jsp).
    Thanks again.
    Nimod.

  • Installing java custom tag

    I'm trying to install a custom tag written in java
    (cfx_ExcelQuery) and am not having any success.
    The tag was in a .jar file which I downloaded to the server
    and extracted to the /classes subdirectory. The actual .class file
    ended up in a subdirectory several levels below.
    I registered the tag as ExcelQuery and wrote a test program
    to call the tag according to the specs.
    I got a CF error indicating the tag didn't exist until I
    added the directory path containing the .class file (the exact
    subdirectory). Now I get an internal server error instead (progress
    I guess).
    I have no experience installing/using java custom tags so I
    may be missing something that would be obvious to someone else.
    If anyone has any ideas please let me know.
    Thanks,
    Ken

    I got this error:
    Error processing CFX custom tag CFX_net.sourceforge.openxcf.javacfx.text2query. 
    The CFX custom tag CFX_net.sourceforge.openxcf.javacfx.text2query was not found in the custom tag database. You must add custom tags to the database before using them. If you have added your tag to the database, check the spelling of the tag within your template to ensure that it matches the database entry. 
    The error occurred in C:\Inetpub\wwwroot\scratch\DataLoad\checkGradData_NEW_July.cfm: line 191
    189 :                                         
    190 :      <cfx_text2Query
    191 :       file="#FeedPath##FileName#"
    192 :       firstRowIsHeader="false"
    193 :       delimiter="#chr(9)#"

  • Question about custom tags

    Hi All,
    Please tell me what is differnce between javabean and custom tags.
    thank you.

    Javabean is a data object (or a data holder) whose properties can be accessed using getters, setters - ex getName() and setName()
    JSP custom tags are merely Java classes that implement special interfaces (Tag interface). Once they are developed and deployed, their actions can be called from your HTML using XML syntax. Refer the article http://java.sun.com/developer/technicalArticles/xml/WebAppDev3/
    Cheers,
    Janesh

  • Custom tags

    Hi there,
              Our site is running on Weblogis server 5.0. We are using EJBs, JSPs. We
              have several JSP custom tags. but, one of those is raising an exception
              quite often:
              Tue Jul 25 21:37:19 EDT 2000:<E> <ServletContext-abracat> exception
              raised on '/abc/search/animals/index.jsp'
              javax.servlet.ServletException: runtime failure in custom tag
              'dynamicpage'
              at java.lang.Throwable.fillInStackTrace(Native Method)
              at java.lang.Throwable.fillInStackTrace(Compiled Code)
              at java.lang.Throwable.<init>(Compiled Code)
              at java.lang.Exception.<init>(Compiled Code)
              at javax.servlet.ServletException.<init>(Compiled Code)
              at jsp_servlet._search._animals._index._jspService(Compiled Code)
              at weblogic.servlet.jsp.JspBase.service(Compiled Code)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Compiled
              Code)
              at weblogic.servlet.internal.ServletContextImpl.invokeServlet(Compiled
              Code)
              at weblogic.servlet.JSPServlet.service(Compiled Code)
              at javax.servlet.http.HttpServlet.service(Compiled Code)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(Compiled
              Code)
              at weblogic.servlet.internal.ServletContextImpl.invokeServlet(Compiled
              Code)
              at weblogic.servlet.internal.ServletContextImpl.invokeServlet(Compiled
              Code)
              at
              weblogic.servlet.internal.ServletContextManager.invokeServlet(Compiled
              Code)
              at weblogic.socket.MuxableSocketHTTP.invokeServlet(Compiled Code)
              at weblogic.socket.MuxableSocketHTTP.execute(Compiled Code)
              at weblogic.kernel.ExecuteThread.run(Compiled Code)
              Can someone please suggest what must be the reason? And what is the
              possible way of solving this problem.
              Thanks in advance,
              Priya
              

    Oddly, load-on-startup is not mentioned in the text of the servlet-2.2
              specification but it is
              defined in the web-jar.dtd. I have filed an change request against it and
              we will get confirmation
              from the specification people that it actually is a feature that should be
              included in the
              implementation.
              Sam
              "kevinx" <[email protected]> wrote in message
              news:[email protected]...
              >
              > I'm having same type of exceptions running struts example on weblogic 5.1
              with sp 5. I think it has something to do with initialization at server
              startup. The web.xml for the application specified one of the servlet as
              follows...
              >
              > <servlet>
              > <servlet-name>action</servlet-name>
              > <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
              > ......
              > <load-on-startup>2</load-on-startup>
              > </servlet>
              >
              > and there were logs showing something was loaded at startup for Tomcat 3.1
              but not for Webligic 5.1
              >
              > Here are the exceptions ...
              >
              > javax.servlet.ServletException: runtime failure in custom tag 'message'
              > at jsp_servlet._index._jspService(_index.java:91)
              > at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
              > at
              weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
              :105)
              > at
              weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
              :123)
              > at
              weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
              l.java:742)
              > at
              weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
              l.java:686)
              > at
              weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
              Manager.java:247)
              > at
              weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:361)
              > at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:261)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java, Compiled Code)
              >
              > Fri Sep 08 16:05:19 CDT 2000:<E> <ServletContext-struts> root cause of
              ServletException
              > java.lang.NullPointerException:
              > at
              weblogic.servlet.jsp.PageContextImpl.getAttribute(PageContextImpl.java:156)
              > at org.apache.struts.taglib.MessageTag.doStartTag(MessageTag.java:358)
              > at jsp_servlet._index._jspService(_index.java:83)
              > at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
              > at
              weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
              :105)
              > at
              weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
              :123)
              > at
              weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
              l.java:742)
              > at
              weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletContextImp
              l.java:686)
              > at
              weblogic.servlet.internal.ServletContextManager.invokeServlet(ServletContext
              Manager.java:247)
              > at
              weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.java:361)
              > at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:261)
              > at weblogic.kernel.ExecuteThread.run(ExecuteThread.java, Compiled Code)
              >
              >
              

  • How to invoke a funtion on a custom tag value?

    Hello,
    I have a custom tag used in my code.
    It is used as follows:
    <b:testtag name="Title"/>
    This outputs a String value.
    This is used in my HTML as follows:
    <b:testtag name="Title"/>
    This part of the code works fine. However i now want to invoke some funtion on the String outputted before actually outputing it. To be more specific, i need to convert the string to uppercase before outputting it.
    So my question is, Is there anyway to directly invoke the String.toUpperCase method on the tag output?
    If not, another way of achieving this is to store the value returned by the custom tag into a java String variable in a scriplet code, and invoke the String.toUpperCase method.
    Any idea how to go about with this? Particularly, i would like to know if it is possible to store the value outputted by the tag into a java variable in a scriplet code?
    If not is there any other way of converting the tag output value to uppercase?
    Please help!
    Thanks in advance

    Solution one: Change your tag so it outputs in uppercase
    Solution two: use a tag from a String taglib and put that tag around your tag
    example taglib:
    http://jakarta.apache.org/taglibs/doc/string-doc/intro.html
    example bit of code
    <a href='some test url here'><str:upperCase><b:testtag name="Title"/></str:upperCase></a>

  • Problem deploying and using custom Tags in jar files

    I am trying to create a custom tag library of Java classes, package them in a JAR file, and use them in another web application. Here is the JAR file structure, named mytags.jar:
    META-INF
    META-INF/manifest.mf
    META-INF/taglib.tld
    mytags/FooBar.class
    mytags/Another.class
    ...Here is the taglib.tld file:
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <taglib xmlns="http://java.sun.com/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
    version="2.0">
       <tlib-version>1.0</tlib-version>
       <short-name>foo</short-name>
       <uri>fooTags</uri>
       <info>My tags</info>
       <tag>
         <name>fooBar</name>
         <tag-class>mytags.FooBar</tag-class>
         <body-content>empty</body-content>
         <attribute>
           <name>name</name>
           <required>false</required>
           <rtexprvalue>true</rtexprvalue>
         </attribute>
      </tag>
    </taglib>The FooBar class has getName(String) and setName() methods.
    In the web application, I have copied mytags.jar into the WEB-INF/lib directory. I've verified that it lands in the corresponding directory for my appserver (I'm using Tomcat 6.0.10).
    Here's the header for my JSP:
    <%@ page language="java" contentType="text/html;charset=UTF-8" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%@ taglib uri="fooTags" prefix="foo" %>
    <foo:fooBar name="dummy" />
    ...When I access my page, the browser sits there and spins, not able to do anything. I know that some of the content is executed, but it is not able to get to the fooTags. I have tried replacing fooTags with WEB-INF/lib/mytags.jar, to no effect.
    According to the docs, I should not need to include anything in web.xml to reference the fooTags. The tag library classes are valid, since I used them as local tags prior to moving them into a Jar library.
    Any help would be appreciated

    Take the code of the jsp file :
    <%@ page language="java" %>
    <%@ taglib uri="WEB-INF/struts-html.tld" prefix="html" %>
    <html>
       <head>
         <title> First Struts Application </title>
       </head>
         <body>
            <table width="500" border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td> </td>
            </tr>
            <tr bgcolor="#36566E">
              <td height="68" width="48%">
                <div align="left">
                  <img src="images/hht.gif" width="220" height="74">
                </div>
              </td>
            </tr>
            <tr>
             <td> </td>
            </tr>     
           </table>
           <html:form action="Lookup"
                      name="lookupForm"
                      type="wiley.LookupForm" >
           <table width="45%" border="0">
            <tr>
              <td>Symbol:</td>
              <td><html:text property="symbol" /> </td>
            </tr>
             <tr>       
              <td colspan="2" align="center"><html:submit/> </td>
             </tr>       
            </table>              
          </html:form>
         </body>
    </html>

  • Java Bean access in a JSP Tag handler class

    Hello Everybody,
    I am trying to access my java bean(ErrorBean.java) in th doEndTag() method of the tag handler class(MyTagHandler.java) and iam getting an "CLASSCAST EXCEPTION"
    I am doing it like this in the tag handler class.
    MyBeans.ErrorBean errorBean = (MyBeans.ErrorBean)pageContext.getSession().getAttribute("ErrorBean");
    Where MyBeans is the package in which my Error Bean is and iam placing the ErrorBean object in the session object before it comes to the jsp page where i have the jsp Custom tag:
    <%@ taglib uri="/WEB-INF/taglib.tld" prefix="errors" %>
    <errors:message/>
    <%@ include file="footer.jsp"%>
    I was of the opinion that i was casting it right...can anyone help me to find ...where iam doing it wrong...its really URGENT ..PLEASE

    Friend that did not work either ...
    u know what...the ErrorTagHandler class is comiling fine with out errors but in the jsp page when the custom tag is hit..this error is showing up when i see the server log.
    can you throw some light on this..
    thanks..
    Firasath

  • Hi, I have quick question about use of USEBEAN tag in SP2. When I specify a scope of SESSION for the java bean, it does not keep the values that I set for variable in the bean persistent.Thanks,Sonny

     

    Make sure that your bean is implementing the serializable interface and that
    you are accessing the bean from the session with the same name.
    Bryan
    "Sandeep Suri" <[email protected]> wrote in message
    news:[email protected]..
    Hi, I have quick question about use of USEBEAN tag in SP2. When I
    specify a scope of SESSION for the java bean, it does not keep the
    values that I set for variable in the bean persistent.Thanks,Sonny
    Try our New Web Based Forum at http://softwareforum.sun.com
    Includes Access to our Product Knowledge Base!

  • Assigning bean property to custom tag's attribute

    1. The #{beanName.property} notation can only be used inside JSF tags.
    2. The attributes of custom tags does not accept embedded tags.
    e.g. <prefix:tagName attrib1="<jsftag>">
    I need to assign a bean's property to the attrib1 attribute. how do I do this?

    Alternatively, how can I assign the value of a bean property to a variable?
    e.g.
    <%
    int var=<bean.property>
    %>
    I can use the variable on the custom tag like this:
    <prefix:tagName attrib1="<%=var%>"> OR
    But this may not be the best solution though because I have to use scriptlets...

  • Is there any way to create objects in jstl even if its not a java bean

    please someone help me :<(
    thx in advance for the time you'll spend on my question.
    i am translating some code in jsp with embedded java to jstl. and in scriptlets they created java object of some class and using it in loop. but that class is not bean, so i can't use <jsp:useBean> tag so how do i do that here is the code
    <% TabLayoutConfiguratorImpl tabsConfigurator = new TabLayoutConfiguratorImpl();
    %>
    <logic:iterate id="tab" name="tabList" type="TabItem" >
    <% // compute href
    if (!tabsConfigurator.isHidden(tab))
    -----statements-----
    %>
    </logic:iterate>
    how can i create TabLayoutConfiguratorImpl class object and use everything should be done in jstl? is there any way at all?
    here is my class
    package conf;
    import javax.servlet.http.*;
    import org.apache.struts.tiles.ComponentContext;
    public class TabLayoutConfiguratorImpl implements TabLayoutConfigurator
    public void configure(HttpServletRequest request) {
    HttpSession session = request.getSession();
    ComponentContext context = ComponentContext.getContext(request);
    this.configureDefinition(context);
    java.util.Iterator i = ((java.util.List) context.getAttribute("tabList")).iterator();
    while (i.hasNext())
    TabItem tab = (TabItem) i.next();
    this.configureTab(tab, session);
    // subclasses should override this if there the attributes in the Definition
    // need to be manipulated
    protected void configureDefinition(ComponentContext context)
    // default implementation does nothing
    // subclasses should override this if tabs in the definition
    // need to be manipulated
    protected void configureTab(TabItem tab, HttpSession session)
    // default implementation does nothing
    // subclasses should override this if they want to hide tabs in the
    // configuration
    public boolean isHidden(TabItem tab)
    // default implementation returns false - ie they are visible
    return false;
    }

    I don't see what is wrong with
    <jsp:useBean id="tabsConfigurator" class="com.mypackage.TabLayoutConfiguratorImpl"/>
    The class has a no-args constructor at least. The useBean tag will work with it. Probably.
    But still, some code just can't be translated into scriptless JSTL.
    Calling methods which take parameters is one of those things.
    In this case you probably want to write a custom tag to work with your tabs
    I would probably look at using custom tags like this:
    <%@ taglib prefix="tab" uri="/WEB-INF/TabLayout.tld"%>
    // tab to create the configurator.
    // either export it as a var, or use other tags only nested within this one
    // so you can get access to the configurator.
    <tab:configure var="configurator">
      <tab:render configurator="${configurator}" tab="${tab}">
    </tab:configure>I don't know exactly what the scriptlet code will be doing. But I think a custom taglib would be the only way to eliminate scriptlet code that you have here.

  • Runtime failure in custom tag

              I was curious if you knew what specifically you did to remove the runtime error.
              I am also getting the runtime failure. The try/catch that another discussion thread
              suggested does not catch the error since the exception is thrown prior to the
              doStart and doEnd Tag methods. I know that the exception is thrown immediately
              after the constructor is called for the tag and before the setParent method is
              called.
              Anyway, thank you in advance for any suggestions you might have.
              try { // begin instantiate/release try/catch/finally block... //[ /wattage/wtgMainMenu.jsp;
              Line: 36]
                   westerncommon_jsptag_HeaderTag_0 = (western.common.jsptag.HeaderTag)java.beans.Beans.instantiate(getClass().getClassLoader(),
              "western.common.jsptag.HeaderTag"); //[ /wattage/wtgMainMenu.jsp; Line: 36]
              westerncommon_jsptag_HeaderTag_0.setPageContext(pageContext); //[ /wattage/wtgMainMenu.jsp;
              Line: 36]
              westerncommon_jsptag_HeaderTag_0.setParent(null); //[ /wattage/wtgMainMenu.jsp;
              Line: 36]
                   westerncommon_jsptag_HeaderTag_0.setNavMenuHREF(weblogic.utils.StringUtils.valueOf("wtgLogout.jsp"));
              //[ /wattage/wtgMainMenu.jsp; Line: 36]
              westerncommon_jsptag_HeaderTag_0.setNavMenu(weblogic.utils.StringUtils.valueOf("Logout"));
              //[ /wattage/wtgMainMenu.jsp; Line: 36]
              westerncommon_jsptag_HeaderTag_0.setTitle(weblogic.utils.StringUtils.valueOf("Main
              Menu")); //[ /wattage/wtgMainMenu.jsp; Line: 36]
              int int0 = westerncommon_jsptag_HeaderTag_0.doStartTag(); //[ /wattage/wtgMainMenu.jsp;
              Line: 36]
                   if (_int_0 == BodyTag.EVAL_BODY_TAG) { //[ /wattage/wtgMainMenu.jsp; Line: 36]
                        throw new JspTagException("Since tag class western.common.jsptag.HeaderTag does
              not implements BodyTag, it cannot return BodyTag.EVAL_BODY_TAG"); //[ /wattage/wtgMainMenu.jsp;
              Line: 36]
              } //[ /wattage/wtgMainMenu.jsp; Line: 36]
              /*** sync AT_BEGIN TagExtra Vars here ***/ //[ /wattage/wtgMainMenu.jsp;
              Line: 36]
              if (_int_0 != Tag.SKIP_BODY) { // begin !SKIP_BODY... //[ /wattage/wtgMainMenu.jsp;
              Line: 36]
                        //[ /wattage/wtgMainMenu.jsp; Line: 36]
                        out.print("\r\n");
                             //[ /wattage/wtgMainMenu.jsp; Line: 37]
                   } // end !SKIP_BODY //[ /wattage/wtgMainMenu.jsp; Line: 37]
              if (_western_common_jsptag_HeaderTag_0.doEndTag() == Tag.SKIP_PAGE) return;
              //[ /wattage/wtgMainMenu.jsp; Line: 37]
              } catch (java.lang.Exception javalang_Exception_0) { // instantiate/release
              try/catch/finally //[ /wattage/wtgMainMenu.jsp; Line: 37]
                   throw new ServletException("runtime failure in custom tag 'HeaderTag'", javalang_Exception_0);
              //[ /wattage/wtgMainMenu.jsp; Line: 37]
              } finally { // instantiate/release try/catch/finally block... //[ /wattage/wtgMainMenu.jsp;
              Line: 37]
                   if (_western_common_jsptag_HeaderTag_0 != null) westerncommon_jsptag_HeaderTag_0.release();
              //[ /wattage/wtgMainMenu.jsp; Line: 37]
              } //[ /wattage/wtgMainMenu.jsp; Line: 37]
              ----------CONSOLE OUTPUT-------------
              Getting Page permissions for page: wtgMainMenu.jsp user: 0
              Page Permissions: Insert-1 View-1 Update-1 Delete-1
              HeaderTag -- Constructing
              Thu Apr 05 11:19:00 CDT 2001:<E> <ServletContext-General> exception raised on
              wattage/wtgMainMenu.jsp'
              javax.servlet.ServletException: runtime failure in custom tag 'HeaderTag'
              at jsp_servlet.wattage.wtgmainmenu._jspService(wtgmainmenu.java:398)
              at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
              at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
              pl.java:124)
              at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
              textImpl.java:744)
              at weblogic.servlet.internal.ServletContextImpl.invokeServlet(ServletCon
              textImpl.java:692)
              at weblogic.servlet.internal.ServletContextManager.invokeServlet(Servlet
              ContextManager.java:251)
              at weblogic.socket.MuxableSocketHTTP.invokeServlet(MuxableSocketHTTP.jav
              a:363)
              at weblogic.socket.MuxableSocketHTTP.execute(MuxableSocketHTTP.java:263)
              at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
              

    I just started getting this error after a year in production environment without any problems. Did you every find out what caused this or better yet how to prevent this?
              Dan.
              

  • How can I use evaluate to get the instance variable in customized tag

    1.
    At first , I create a class called bean,and declared several params in it and do not define any getter function for the param.
    class bean{
    String param = "test";
    SomeClass scObj = new SomeClass();
    2.
    The second ,I use
    request.setAttribute("beanObj",new bean());
    3.
    And then I wanna use the customized tag to show a text box , then initialize it's value.
    <salt:text name="param" value="beanObj.param">
    <salt:text name="obj" value="beanObj.scObj.func()">
    4.
    I tried the evaluator provided by JexlContext ,Struts, JSTL and it seems that if I do not define the getter for the variable ,I can not get the bean's instance variable's value.
    Expression e = ExpressionFactory.createExpression( value );
    JexlContext jc = JexlHelper.createContext();
    jc.getVars().put(strInitBeanName, request.getAttribute("beanObj"));
    Object obj = e.evaluate(jc);
    the result of the obj is null....
    Can anybody recommand some other evaluator can get the value of a instance variable from an object?

    do you have any other suggestion ? Nops, somebody else may have though. AFAIK, all lookups of the type
    beanName.propertyNameuse reflection on the getXXX() methods to access the property.
    Having said that, I guess you could write one though in a custom tag, using the same - reflection (you will ahve to rely on the java.lang.reflect.Field class quite heavily) - but that would be reinventing the wheel for most other functionality that you would have to include (like looking up the bean in scope etc)
    cheers,
    ram.

  • Custom tag for Marquee in JSF

    Hi,
    I am trying to develop a custom tag for Marquee in JSF, my usecase is to display a value from managed bean(Dynamically). please find the code below and guide me where i have made mistake
    regards
    Sandeep
    Component class:
    package customtags;
    import javax.el.ValueExpression;
    import javax.faces.component.UIComponentBase;
    import javax.faces.context.FacesContext;
    public class Marquee extends UIComponentBase {
         public static final String COMPONENT_TYPE = "marqueecomp";
         public static final String RENDERER_TYPE = "marqueeRenderer";
         private Object[] _state = null;
         private String value;
         public String getValue() {
              if (null != this.value) {
                   return this.value;
              ValueExpression _ve = getValueExpression("value");
              return (_ve != null) ? (String) _ve.getValue(getFacesContext()
                        .getELContext()) : null;
         public void setValue(String marquee) {
              this.value = marquee;
         public String getFamily() {
              // TODO Auto-generated method stub
              return COMPONENT_TYPE;
    //     public void encodeBegin(FacesContext context) throws IOException {
    //          ResponseWriter writer = context.getResponseWriter();
    //          writer.startElement("marquee", this);
    //          writer.write(getValue());
    //          writer.endElement("marquee");
         public void restoreState(FacesContext context, Object state) {
              this._state = (Object[]) _state;
              super.restoreState(_context, this._state[0]);
              value = (String) this._state[1];
         public Object saveState(FacesContext _context) {
              if (_state == null) {
                   _state = new Object[2];
              state[0] = super.saveState(context);
              _state[1] = value;
              return _state;
    Tag Class:
    package customtags;
    import javax.el.ValueExpression;
    import javax.faces.component.UIComponent;
    import javax.faces.webapp.UIComponentELTag;
    public class MarqueeTag extends UIComponentELTag {
         protected ValueExpression marquee;
         public String getComponentType() {
              // TODO Auto-generated method stub
              return Marquee.COMPONENT_TYPE;
         public String getRendererType() {
              // TODO Auto-generated method stub
              return Marquee.RENDERER_TYPE;
         * protected void setProperties(UIComponent component) {
         * super.setProperties(component); Marquee marqComp = (Marquee) component;
         * if (marquee != null) { marqComp.setValue(marquee); } }
         protected void setProperties(UIComponent component) {
              super.setProperties(component);
              Marquee marqComp = null;
              try {
                   marqComp = (Marquee) component;
              } catch (ClassCastException cce) {
                   throw new IllegalStateException(
                             "Component "
                                       + component.toString()
                                       + " not expected type. Expected: com.foo.Foo. Perhaps you're missing a tag?");
              if (marquee != null) {
                   //marqComp.setValueExpression("value", marquee);
                   marqComp.setValue("fsdfsdfsdfsdfsd");
         * @return the marquee
         public ValueExpression getMarquee() {
              return marquee;
         * @param marquee
         * the marquee to set
         public void setMarquee(ValueExpression marquee) {
              this.marquee = marquee;
    *.tld file*
    <?xml version="1.0" encoding="UTF-8"?>
    <taglib xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
         version="2.1">
         <tlib-version>1.0</tlib-version>
         <short-name>marqueecomp</short-name>
         <uri>http://tags.org/marquee</uri>
         <tag>
              <name>marqueeTag</name>
    <tag-class>customtags.MarqueeTag</tag-class>
    <body-content>empty</body-content>
    <attribute>
    <description><![CDATA[Your description here]]></description>
    <name>id</name>
    <required>false</required>
    <rtexprvalue>true</rtexprvalue>
    </attribute>
    <attribute>
    <description><![CDATA[Your description here]]></description>
    <name>value</name>
    </attribute>
         </tag>
    </taglib>
    Renderer class:
    package customtags;
    import java.io.IOException;
    import javax.faces.component.UIComponent;
    import javax.faces.context.FacesContext;
    import javax.faces.context.ResponseWriter;
    import javax.faces.render.Renderer;
    public class MarqueeRenderer extends Renderer {
         public void encodeBegin(final FacesContext facesContext,
    final UIComponent component) throws IOException {
    super.encodeBegin(facesContext, component);
    final ResponseWriter writer = facesContext.getResponseWriter();
    writer.startElement("DIV", component);
    /*String styleClass =
    (String)attributes.get(Shuffler.STYLECLASS_ATTRIBUTE_KEY);
    writer.writeAttribute("class", styleClass, null);*/
    public void encodeEnd(final FacesContext facesContext,
    final UIComponent component) throws IOException {
    final ResponseWriter writer = facesContext.getResponseWriter();
    writer.endElement("DIV");
    in Faces-Config:
    <component>
              <display-name>marqueecomp</display-name>
              <component-type>marqueecomp</component-type>
              <component-class>customtags.Marquee</component-class>
              <component-extension>
    <renderer-type>marqueeRenderer</renderer-type>
    </component-extension>
         </component>
         <render-kit>
    <renderer>
    <component-family>marqueecomp</component-family>
    <renderer-type>marqueeRenderer</renderer-type>
    <renderer-class>customtags.MarqueeRenderer</renderer-class>
    </renderer>
    </render-kit>
    In class path --->marquee.taglib.xml
    <?xml version="1.0"?>
    <!DOCTYPE facelet-taglib PUBLIC
    "-//Sun Microsystems, Inc.//DTD Facelet Taglib 1.0//EN"
    "http://java.sun.com/dtd/facelet-taglib_1_0.dtd">
    <facelet-taglib>
    <namespace>http://tags.org/marquee</namespace>
    <tag>
    <tag-name>marqueeTag</tag-name>
    <component>
    <component-type>marqueecomp</component-type>
    <renderer-type>marqueeRenderer</renderer-type>
    </component>
    </tag>
    </facelet-taglib>
    *.xhtml file*
    <html xmlns="http://www.w3.org/1999/xhtml"
         xmlns:ui="http://java.sun.com/jsf/facelets"
         xmlns:h="http://java.sun.com/jsf/html"
         xmlns:f="http://java.sun.com/jsf/core" xml:lang="en" lang="en"
         xmlns:a4j="http://richfaces.org/a4j"
         xmlns:rich="http://richfaces.org/rich" xmlns:mycomp="http://tags.org/marquee">
    <head>
    <title>DEBTDOC Home Page</title>
    <meta http-equiv="keywords" content="enter,your,keywords,here" />
    <meta http-equiv="description"
         content="A short description of this page." />
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" type="text/css" href="../css/common.css"></link>
    <script language="javascript" src="../script/common.js"></script>
    </head>
    <body>
    <f:view>
    <mycomp:marqueeTag value="hello World"></mycomp:marqueeTag>

    There exist the JSTL SQL taglib, but I don't recommend this. It should only be used for quick development and testing. For database connectivity, rather create a data layer with DAO classes which you on its turn just plug in your business layer (with servlets).

Maybe you are looking for

  • HELP!  Stuck in a Loop after Erase & Install Tiger 10.4

    Here's what happened: My old G4 PPC PowerMac suddenly started running everything (including on startup) very slowly. A weird sound was coming from the HD? (not sure) but it sounded like it was constantly doing something. The sound was a regular: chik

  • Cut, Copy and Paste/ Camra Features

    Please make these features avilable with your next update. Cut, copy and paste from the internet phonebooks and emails. Also update your spell check its really not that good. And flash player we can not stress enough. One more thing I was at a concer

  • Why is the printing colour now revereed in new Firefox on ebay

    ''''''bold text'''''' I downloaded the new V4 of Firefox yesterday. Now, when I print a page on Ebay, the screen colour is reversed- I get a completely black coloured page. (which uses up a hell of a lot of ink!!) Just after I press the print button

  • It seems that NI dropped the Activex Events from the Control Panel in LabVIEW 7.0. Why???

    I have Labview 6.0/6.1 Activex vi's that no longer work in LabView 7.0 There are no longer ActiveX Events vi's in the Communications->ActiveX control set. What is the deal with that??? Pretty much makes my $2400 upgrade investment worth nothing as fa

  • Template not updating pages on save

    I created a template, then created pages based on that template. I make a change to the template, save, it says it will update my 10 pages, then the log shows that 0 pages were updated. I check the pages, they didn't update. What's the problem? Why a