好的.页面牵移前:session.setAttribute("pb",pb);
RequestDispatcher b = request.getRequestDispatcher("a.jsp");
b.forward(request,response);a.jsp:<jsp:useBean id="pb" scope="session" class="guilin.project.PrjBean"/>
...<form name="form" action="/guilin/slip" target="_self" method="post">
<TABLE border="0">
  <TBODY>
    <TR>
      <TD width="100">编号</TD>
      <TD><jsp:getProperty name="pb" property="PRJID"/></TD>      <TD width="100">级别</TD>
      <TD><jsp:getProperty name="pb" property="RANKID"/></TD>    </TR>
  </tbody>
</table>
<TABLE border="0" width="100%">
 <TR>
   <TD align="left">
     <input type="submit" value="确认" name="confirm" class="button">
   </TD>
 </TR>
</TABLE>
</FORM>
<jsp:setProperty name="pb" property="*"/>页面牵移后:
PrjBean pb = session.getAttribute("pb");
System.out.println(pb.getRANKID());结果:

帮忙看看,上面的代码有什么问题

解决方案 »

  1.   

    三、jsp:setProperty Action  语法:<jsp:setProperty
    name="beanInstanceName"
    { property="*" |
    property="propertyName" [ param="parameterName" ] |
    property="propertyName" value="{string | <%= expression %>}"
    }
    />  在前面我们就知道了可以使用 jsp:setProperty 来为一个bean的属性赋值。您可以使用两种方式实现它。其一是,在jsp:useBean后(而不是在之内)使用jsp:setProperty:<jsp:useBean id="myName" ... />
    ...
    <jsp:setProperty name="myName" 
    property="someProperty" ... />  在这种方式中,jsp:setProperty 将被执行无论是否已有一个具有相同的id和scope的bean存在。另一种方式是,jsp:setProperty出现在jsp:useBean 元素内,如:<jsp:useBean id="myName" ... >
    ...
    <jsp:setProperty name="myName" 
    property="someProperty" ... />
    </jsp:useBean>  此种情况下,jsp:setProperty仅在新的对象被实例化时才执行。  以下是四种jsp:setProperty的可用的属性:  属性  用法name
      这是一个必选属性。它指出哪一个bean的属性将被设置。jsp:usebean必须出现在jsp:setProperty之前。property
      这是一个必选属性。表明您将设置哪一个属性。然而,有一个特殊的情况:如果以"*"为值意味着,所有的名称与bean的属性匹配的request参数都将被传递到相应的属性设置方法。
    value
      这是一个可选属性。它指定被设置的属性的值。字符串的值通过相应的对象或包的标准的valueOf方法将自动的转换为numbers,boolean,Boolean,byte,Byte,char,和Character。例如,boolean或Boolean属性的值“true”将通过Boolean.valueOf方法转化,而,一个int或Integer属性的值“42”将通过Integer.valueOf转化。您不能同时使用value和param属性,但,两个都不用是允许的。param
      这是一个可选属性。它指明了bean的属性应该继承的request的参数。如果当前的request没有这样的一个参数,就什麽也不做:系统并不将null传给设置属性的方法。因此,您可以使用bean的缺省值。例如下面的这段程序执行“将numberOfItems属性设置为任意numItems request参数的值,如果有这样的一个request参数,否则什么也不做。”<jsp:setProperty name="orderBean" 
    property="numberOfItems"
    param="numItems" />  如果您将value和param同时缺省,这和您将param的名称设为bean的属性名相同一样。您可以通过将name的值设置为”*”和省略value和param来自动的使用与bean的属性相应的request的属性。在这种情况下,服务器将反复的查找可用的属性和request参数来匹配具有相同名字的。
      

  2.   

    <jsp:useBean id="DOMRender" class="YourClass">
    <jsp:setProperty name="DOMRender" property="sourceXML" value="link.xml"/>
    </jsp:useBean>确保bean有
    String sourceXML;
    public void setSourceXML(String str)
    {}
      

  3.   

    我想使用param属性
    <jsp:setProperty name="pb" property="RANKNAME" param="RANKNAME"/>
    bean中有
    setRANKNAME(String str){}
    jsp中有
    <select name="RANKNAME">...
    照书上说,JSP应该能够自动把用户在SELECT中选择的结果存入bean中,
    但是我没有成功:(
    为什么???
      

  4.   

    <jsp:setProperty name="pb" property="RANKNAME" param="RANKNAME"/>好象property和param不能同时出现!