On Fri, May 25, 2001 at 09:01:51AM -0400, Leon Palermo wrote:
> Re: problems installing tomcat on linuxHello All,
> 
> Let me preface this email by saying that I only put 'EXPERTS ONLY' so you hot shot 
>programmers would actually read this email.  If you are reading this, it worked!
> 
> I have an odd problem that I was hoping someone could help with.
> 
> I have a servlet that all jsps in the system are dispatched from.  I create a bean 
>in this servlet and add it to the request object like so...
> 
>     com.blah.blah.MyBean abean = (com.blah.blah.MyBean) 
>Beans.instantiate(this.getClass().getClassLoader(),"com.blah.blah.MyBean");
>     ...
>     request.setAttribute("thename", abean);
>                 
> I have also tried this to create the bean....
> 
>     com.blah.blah.MyBean abean = new com.blah.blah.MyBean();
> 
> 
> and also tried to place the object in the request like so....
> 
>     pageContext.setAttribute("thename", abean, PageContext.REQUEST_SCOPE);
> 
> Anywho, I then have the following in my jsp page...
> 
>     <jsp:useBean id="thename" scope="request" class="com.blah.blah.MyBean" />
> 
> I get a java.lang.ClassCastException from the jsp.  So, I decided to do a little 
>error hunting in a jsp using the following code...
> 
> <%try{
>     System.out.println(request.getAttribute("thename") == null);
>     System.out.println(request.getAttribute("thename") instanceof 
>com.blah.blah.MyBean);
>     System.out.println(request.getAttribute("thename").getClass().getName());
>     
>System.out.println(zedak.docworx.jspsupport.beans.BrandBean)request.getAttribute("thename"));
> }catch (ClassCastException e){
>     System.out.println("CLASS CAST EXCEPTION!");
> }
> %>
> 
> The results of the code is as follows:
> 
>     false
>     false
>     com.blah.blah.MyBean
>     CLASS CAST EXCEPTION!
> 
> So, the attribute is present in the request object, it is not an instance of 
>'com.blah.blah.MyBean'; but the object's class name is 'com.blah.blah.MyBean'.  Does 
>anyone have an idea what is going on?  How can the object's class name be 
>'com.blah.blah.MyBean' but not be able to cast to 'com.blah.blah.MyBean'?
> 
> Thanks in advance!
> 
> Leon Palermo

I'm pretty sure you've got a precedence problem.

this code:
(com.blah.blah.MyBean)request.getAttribute("whatever");

will try to cast request to com.blah.blah.MyBean and then apply the
getAttribute generic function to that (this had better NOT work :).
try this:

(com.blah.blah.MyBean)(request.getAttribute("whatever"));

http://java.sun.com/docs/books/jls/index.html You want section 15.7,
Evaluation order. 

hope this helps.
-- 
-Marco
Ring the bells that still can ring.
Forget the perfect offering.
There's a crack in everything.
It's how the light gets in.
        -Isonard Cohen

PGP signature

Reply via email to