分享

jsp设置JavaBean属性值的动作jsp:setProperty

 CevenCheng 2011-08-01
设置JavaBean属性值的动作<jsp:setProperty>
<jsp:setProperty>标识通常情况下与<jsp:useBean>标识一起使用,它调用JavaBean中的setXXX()方法,将请求中的参数赋值给由<jsp:useBean>标识创建的JavaBean中的对应的简单属性或索引属性。该标识的使用格式如下:
<jsp:setProperty
name="Bean实例名" {
property="*" |
property="propertyName" |
property="propertyName" param="parameterName" |
property="propertyName" value="值"
}/>
下面通过表1对<jsp:setProperty>标识中的各属性作简要说明。

表1  <jsp:setProperty>标识中各属性的简要说明
下面对表中属性的用法进行详细的介绍。
      name属性
name属性用来指定一个存在JSP中某个范围中的JavaBean实例。<jsp:setProperty>标识将会按照page、request、session和application的顺序来查找这个JavaBean实例,直到第一个实例被找到。若任何范围内不存在这个JavaBean实例则会抛出异常。
      property="*"
property属性取值为“*”时,则request请求中的所有参数的值将被一一赋给JavaBean中与参数具有相同名字的属性。如果请求中存在空值的参数,那么JavaBean中对应的属性将不会被赋值为Null;如果JavaBean中存在一个属性,但请求中没有与之对应的参数,那么该属性同样不会被赋值为Null。在这两种情况下的JavaBean属性都会保留原来或默认的值。
这种使用方法要求请求中参数的名称和类型必须与JavaBean中属性的名称和类型一致。但由于通过表单传递的参数都是String类型的,所以JSP会自动将这些参数转换为JavaBean中对应属性的类型。表2列出了JSP自动将String类型转换为其他类型时所调用的方法。

表2  将String类型转换为其他类型的方法
      property="propertyName"
property属性取值为JavaBean中的属性时,则只会将request请求中与该JavaBean属性同名的一个参数的值赋给这个JavaBean属性。
更进一步讲,如果property属性指定的JavaBean属性为“userName”,那么指定JavaBean中必须存在setUserName()方法,否则会抛出类似于下面的异常:
Cannot find any information on property 'userName' in a bean of type 'com.Bean.UserInfo'
在此基础上,如果请求中没有与“userName”同名的参数,则该JavaBean属性会保留原来或默认的值,而不会被赋值为Null。
与将property属性赋值为“*”一样,当请求中参数的类型与JavaBean中属性类型不一致时,JSP会自动进行转换。
      property="propertyName" param="parameterName"
param属性指定一个request请求中的参数,property属性指定JavaBean中的某个属性。该种使用方法允许将请求中的参数赋值给JavaBean中与该参数不同名的属性。如果param属性指定参数的值为空,那么由property属性指定的JavaBean属性会保留原来或默认的值而不会被赋为Null。
      property="propertyName" value="值"
其中value属性指定的值可以是一个字符串数值或表示一个具体值的JSP表达式或EL表达式。该值将被赋给property属性指定的JavaBean属性。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多