现在的位置: 首页 > 综合 > 正文

Struts2 — Jsp取action List及数据映射

2018年04月18日 ⁄ 综合 ⁄ 共 1464字 ⁄ 字号 评论关闭

在struts2里一般用标签struts-tags可以取得action里的List,只需要在jsp的属性和action属性映射起来就可以了。

但对于list的映射还是有一点需要注意到地方。

1. Action里List定义要用泛型

  如: ShoppingCartAction的orderDetails,

        public class ShoppingCartAction extends ActionSupport {
             private Collection<OrderDetail> orderDetails;

     Jsp取

    <s:iterator value="orderDetails">
          <tr>
            <td><input type="checkbox" name="productcode" value="${product.productcode}">${product.productcode}
              <td><input type="text" name="orderDetail.quantityordered" value="${quantityordered}"></td>
            </tr>
       </s:iterator>

       list泛型类, 取值只需要属性名(quantityordered), 而类里的类需要加类名和属性名(product.productcode)

       而jsp提交以后映射Action里的属性, 就需要加类名和属性名(name="orderDetail.quantityordered")

2. 数据类型转换

Struts2自带了一些类型转换器,可以对HTTP字符串和下列 JAVA类型进行转换(自动进行):

1)       String

2)       Boolean/Boolean:truefalse字符串可以被转换成布尔值的原始类型有包装类.

3)       Character/char:

4)       Integer/int,Float/float,Long/long,Double/double

5)       Date:当前LocaleSHORT格式的字符串,:98/10/11

6)       Array:

7)       List:默认使用String填充.

8)       Map:默认使用String填充.

 

例子:

3)      List

 

 

用法和数组一模一样.只不过JAVA中是List但注意,这里最好是用泛型来声明.不然它会自动将参数转换成String类型并存入List. 泛型用法:

<input name=”names[0].username” />

<input name=”names[1].username” />

接收:List<User> names

第一个Userusername为第一个input提交的值

 

4)Map

 

list不同,Map需要一个键,一个值.:

<input name=”nameMap.mary” />

<input name=”nameMap.hellen” />

<input name=”nameMap[‘Sunyu’]” />

上面一种用点语法,一种用方括号.但两种意思一样,当我们提交上面表单后,后台获得的值如下:

Map<String,String> nameMap;值为:

mary --- >第一input提交的值.

hello --- >第二input提交的值.

抱歉!评论已关闭.