应该是可以的,FAQ里有篇<<可以直接在Bean里向页面上进行输出吗?可以的话如何做?>>
的帖子,有人回答可以把out对象传递给bean,但没有说明在jsp中怎样传
我想传递request给bean,在jsp中这样写的: <jsp:setProperty  name="upload"  property="request"  value=request />可出现错误:org.apache.jasper.JasperException: /upload_log.jsp(27,61) quote symbol expected有人知道该怎样作吗?
加20分!

解决方案 »

  1.   

    应该是可以的,FAQ里有篇<<可以直接在Bean里向页面上进行输出吗?可以的话如何做?>>
    的帖子,有人回答可以把out对象传递给bean,但没有说明在jsp中怎样传
    我想传递request给bean,在jsp中这样写的: <jsp:setProperty  name="upload"  property="request"  value=request />可出现错误:org.apache.jasper.JasperException: /upload_log.jsp(27,61) quote symbol expected有人知道该怎样作吗?
    加20分!
    --------------------
    那你自己做做看看啊,呵呵。
      

  2.   

    value属性可以是运行时表达式,只要它是一个String.
    value属性String可以自动地转换成boolean,byte,char,double,int,float,long和等价类。其他的转换需要在bean的setPropertyName()方法中显式地处理。
      

  3.   

    为什么一定要标签,写个scriptlet就搞定了。
    setProperty里面的value只能传递字符串,当然int之类也可以,但是实际上还是调用了
    Integer.valueOf(String)这个方法,boolean类型等也类似。
    在标签库里面标签和jsp页面传递对象时主要靠session或request对象,因为标签里面含有当前jsp页面的pageContext对象的引用,传递引用这一步在jsp运行时完成,但不用手工编写代码。但是作为一般的bean来说,只能手工调用ObjectName.setProperty(ObjectParm)方法,完成对象传递,至少第一个对象要这样,例如你要给的request对象。
    至于为什么没有传递对象的功能,
    我的一个认为是,标签语言表现能力有限,而且比起程序语言,更容易不严密。
    <jsp:setProperty  name="upload"  property="request"  value=request/>
    语法错误
    <jsp:setProperty  name="upload"  property="request"  value="request"/>
    传递字符串"request"。
    <jsp:setProperty  name="upload"  property="request"  value="<%=request%>"/>
    是不是就该是对象?
    可是<%=expr%>在jsp里面一直是变成out.println(expr1);
    大部分人会不会直接就认为<%=request%>就该是个字符串?至于把out对象给bean的事让bean输出不是个好主意,标签才是干这个事的,bean该离view远些。
      

  4.   

    可以,但建议不要这样用,你可以化整为零,把对象再分开,哈,明白吗?对象变成javaBean来处理,这样可以好一些
      

  5.   

    junyi2003(超级菜鸟) : 谢谢protectxp(protect):同意你的观点,scriptlet确实很好用,已经成功了,谢谢.
    这几句话没有看懂" <jsp:setProperty name="upload" property="request" value="<%=request%>"/>
    是不是就该是对象?
    可是<%=expr%>在jsp里面一直是变成out.println(expr1);
    大部分人会不会直接就认为<%=request%>就该是个字符串?",能明确说一下你的意思吗?有人能明确的告诉我可不可以用setProperty传递对象吗?
      

  6.   

    qukmei(鬼才) :非常高兴看到肯定答案,谢谢
    可是你还没有说怎样传递啊?
    能不能具体说明一下
    1,用jsp:setProperty 传递对象时 在jsp中怎样写?
    2,你建议的"化整为零,把对象再分开",我不知道该怎样去做再加30分以示感谢!
      

  7.   

    <%=request%>是字符串,
    化整为零,把对象再分开,是不是指把对象属性拆分成基本类型,再合成吗?
      

  8.   

    protectxp(protect) :hehe,谢谢你的回答
    呵呵,感觉你的汉语有些问题哦,"是不是指把对象属性拆分成基本类型,再合成吗?"
    这句话我读起来感觉非常的别扭!
      

  9.   

    <jsp:setProperty name="upload" property="request" param="request"/>试一试
      

  10.   

    jsp2文件:<%@ page contentType="text/html; charset=GBK" %>
    <%@ page import="java.util.Enumeration"%>
    <html>
    <head>
    <title>
    jsp2
    </title>
    </head>
    <%!
         private String makeTable(HttpServletRequest request)
        {
            String strRequest = "";
            Enumeration enumera = request.getHeaderNames();
            while(enumera.hasMoreElements())
            {
                String Name = (String)enumera.nextElement();
                String value = request.getHeader(Name);
                if(value != null)
                {
                   strRequest += value+",";
                }
            }
            return strRequest;
        }
    %>
    <jsp:useBean id="jsp2BeanId" scope="session" class="test_project.Jsp2Bean" />
    <jsp:setProperty name="jsp2BeanId" property="sample" value="<%= makeTable(request)%>" />
    <jsp:getProperty name="jsp2BeanId" property="sample" />
    <body bgcolor="#ffffff">
    <h1>
    JBuilder Generated JSP
    </h1>
    </body>
    </html>
    jsp2Bean文件:package test_project;public class Jsp2Bean 
    {
      private String sample;  public String getSample() 
      {
        return sample;
      }
      public void setSample(String newValue) 
      {
        if (newValue!=null) 
        {
          sample = newValue;
        }
      }
    }
      

  11.   

    要用的时候再Split开:<%
       String str = jsp2BeanId.getSample();
       String[] str1 = str.split(",");
       for(int i=0;i<str1.length;i++)
       {
          out.println(str1[i]+"<br>");
       }
    %>
      

  12.   

    laipu(寻梦天涯):好像可以啊,不过在bean中执行response.setContentType("text/html")时有个
    java.lang.NullPointerException被抛出,我再找找原因看nql10(林):巧妙!但我要的时对象,不是对象中的值
      

  13.   

    setProperty 本身只支持String,但你可以通过序列化或者类似的方法来用String做对象的中间状态,来实现传对象.
      

  14.   

    木头象说法是对的
    不过STRUTS技术则可以实现一部分
      

  15.   

    laipu(寻梦天涯):好像可以啊,不过在bean中执行response.setContentType("text/html")时有个
    java.lang.NullPointerException被抛出,我再找找原因看这是你在传递变量时有空值 ,你可以先检测 一下,再传递
      

  16.   

    在JSP中用set/getProperty来传个值而已,一些复杂的处理要么放在Bean中或者JSP中<%/*JAVA*/%>
    有时候不要为了结构而结构,也不要为了美观而美观,实用能用好用是第一。
      

  17.   

    laipu(寻梦天涯):不行,能编译通过,但调用bean时出现request为空的异常
      

  18.   

    qukmei(鬼才):你好,传递的是request