<转载>Java(41):在jsp中取出存放在Attribute中的对象及属性

2018年2月3日

1.存放在Attribute中的是某个对象的属性

request.setAttribute("userName",userName);

//在jsp中取值//第一种方式取值

<%=request.getAttribute("userName")%>

//第二种方式取值 注意此处必须进行强制类型转换

<% String a=(String)request.getAttribute("userName");


2.存放在Atrribute中的是某个对象

request.setAttribute("user",user);

//取值方式 注意强制类型转换,必须导入User所在的包 否则会报错

<% User user=(User)request.getAttribute("user");%>

//获取user对象中的属性

<%=user.getUserId()%>

<%=user.getUserName()%>


3.存放在Attribute中的是某个集合对象 集合中有n个User对象

request.setAttribute("list",list);

//获值方式 注意 1.导入List所在的包 和User所在的包 2.List和User要进行强制类型转换。

<% List list=(List)request.getAttribute("list");

Iterator it=list.iterator();

while(it.hasNext()){

User user=(User)it.next(); //记得强制类型转换

String userId=user.getId(); //获取User中的属性

}

%>


在这个的基础上添加枚举域结构,不要破坏原有结构: <xs:element name=“signal”> xs:complexType xs:sequence <xs:element name=“field” minOccurs=“0” maxOccurs=“unbounded”> xs:complexType <xs:attribute name=“pk” type=“xs:string” use=“required”/> <xs:attribute name=“type” type=“fieldType” use=“required”/> <xs:attribute name=“ename” type=“xs:string” use=“required”/> <xs:attribute name=“cname” type=“xs:string” use=“required”/> <xs:attribute name=“size” type=“xs:integer” use=“required”/> <xs:attribute name=“offset” type=“xs:integer” use=“required”/> <xs:attribute name=“init_value” type=“xs:string”/> <xs:attribute name=“true_desc” type=“xs:string”/> <xs:attribute name=“false_desc” type=“xs:string”/> <xs:attribute name=“max_value” type=“xs:string”/> <xs:attribute name=“min_value” type=“xs:string”/> <xs:attribute name=“lsbOrMsb” type=“xs:string”/> <xs:attribute name=“lsbVl” type=“xs:string”/> <xs:attribute name=“msbVal” type=“xs:string”/> <xs:attribute name=“projectHeadPos” type=“xs:string”/> <xs:attribute name=“projectTailPos” type=“xs:string”/> <xs:attribute name=“signed” type=“xs:string”/> <xs:attribute name=“accuracy” type=“xs:string”/> <xs:attribute name=“encodingMode” type=“xs:string”/> <xs:attribute name=“checkType” type=“xs:string”/> <xs:attribute name=“check_start” type=“xs:string”/> <xs:attribute name=“check_end” type=“xs:string”/> <xs:attribute name=“init” type=“xs:string”/> <xs:attribute name=“poly” type=“xs:string”/> <xs:attribute name=“refin” type=“xs:string”/> <xs:attribute name=“refout” type=“xs:string”/> <xs:attribute name=“xorout” type=“xs:string”/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name=“pk” type=“xs:string” use=“required”/> <xs:attribute name=“ename” type=“xs:string” use=“required”/> <xs:attribute name=“cname” type=“xs:string” use=“required”/> <xs:attribute name=“size” type=“xs:integer” use=“required”/> </xs:complexType> </xs:element>
最新发布
11-19
<think> 我们已有的XSD结构是一个包含字段(field)的信号(signal)元素,每个字段有一系列属性。 现在要添加枚举域(enum)的支持,即当字段类型为枚举时,该字段可以包含多个枚举(enum_value)子元素。 同时,枚举类型需要两个新属性:bitmask(布尔)和init_value(字符串,表示初始枚举)。 注意:我们不能破坏原有结构,因此需要: 1. 在字段(field)元素内部添加一个可选的子元素序列,用于包含多个enum_value。 2. 为字段(field)元素添加两个新属性:bitmask和init_value(注意init_value已经存在,但之前是作为可选属性,现在对于枚举类型,它应该是可选的初始枚举,所以可以保留,但需要说明在枚举类型下的用途)。 但是,观察您提供的XSD片段,发现init_value已经作为字段的一个属性存在(在字段的复杂类型中已经定义)。所以,我们只需要添加bitmask属性。 然而,请注意:在之前的XSD中,所有属性都是直接列在字段的复杂类型中,没有根据类型进行分组。因此,添加bitmask属性可以直接添加在字段的属性列表中。 另外,我们需要定义一个enum_value元素,作为字段的子元素。 步骤: 1. 在字段(field)的复杂类型内,添加一个序列(xs:sequence),用于包含enum_value元素(因为之前没有子元素,所以我们需要添加一个序列,并设置minOccurs="0"表示可以没有)。 2. 定义enum_value元素,它有两个属性:value和desc。 3. 为字段添加bitmask属性(布尔类型,可选)。 注意:由于原XSD中字段元素没有子元素,所以我们添加一个序列,并将原来的属性定义保持不变,然后添加序列。 修改后的XSD结构如下(只修改field元素部分): </think> ### 枚举域XSD结构补充(不破坏原有结构) 在原有XSD基础上添加枚举域支持,保持原有属性和结构不变: ```xml <xs:element name="signal"> <xs:complexType> <xs:sequence> <xs:element name="field" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <!-- 添加枚举序列 --> <xs:sequence minOccurs="0"> <xs:element name="enum_value" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="value" type="xs:string" use="required"/> <xs:attribute name="desc" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:sequence> <!-- 保留原有所有属性 --> <xs:attribute name="pk" type="xs:string" use="required"/> <xs:attribute name="type" type="fieldType" use="required"/> <xs:attribute name="ename" type="xs:string" use="required"/> <xs:attribute name="cname" type="xs:string" use="required"/> <xs:attribute name="size" type="xs:integer" use="required"/> <xs:attribute name="offset" type="xs:integer" use="required"/> <xs:attribute name="init_value" type="xs:string"/> <!-- 添加枚举专用属性 --> <xs:attribute name="bitmask" type="xs:boolean"/> <!-- 保留其他类型专用属性 --> <xs:attribute name="true_desc" type="xs:string"/> <xs:attribute name="false_desc" type="xs:string"/> <xs:attribute name="max_value" type="xs:string"/> <xs:attribute name="min_value" type="xs:string"/> <xs:attribute name="lsbOrMsb" type="xs:string"/> <xs:attribute name="lsbVl" type="xs:string"/> <xs:attribute name="msbVal" type="xs:string"/> <xs:attribute name="projectHeadPos" type="xs:string"/> <xs:attribute name="projectTailPos" type="xs:string"/> <xs:attribute name="signed" type="xs:string"/> <xs:attribute name="accuracy" type="xs:string"/> <xs:attribute name="encodingMode" type="xs:string"/> <xs:attribute name="checkType" type="xs:string"/> <xs:attribute name="check_start" type="xs:string"/> <xs:attribute name="check_end" type="xs:string"/> <xs:attribute name="init" type="xs:string"/> <xs:attribute name="poly" type="xs:string"/> <xs:attribute name="refin" type="xs:string"/> <xs:attribute name="refout" type="xs:string"/> <xs:attribute name="xorout" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="pk" type="xs:string" use="required"/> <xs:attribute name="ename" type="xs:string" use="required"/> <xs:attribute name="cname" type="xs:string" use="required"/> <xs:attribute name="size" type="xs:integer" use="required"/> </xs:complexType> </xs:element> ``` ### 补充说明 1. **新增内容**: - 添加了 `<xs:sequence minOccurs="0">` 容器,确保不影响非枚举字段 - 定义了 `<enum_value>` 元素及其属性: ```xml <xs:element name="enum_value" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="value" type="xs:string" use="required"/> <xs:attribute name="desc" type="xs:string" use="required"/> </xs:complexType> </xs:element> ``` - 添加了枚举专用属性: ```xml <xs:attribute name="bitmask" type="xs:boolean"/> ``` 2. **兼容性保证**: - `minOccurs="0"` 确保非枚举字段无需包含enum_value - 所有原有属性保持位置和功能不变 - 新增属性不影响现有字段验证规则 3. **字段类型扩展**: 在fieldType枚举中添加enum类型: ```xml <xs:simpleType name="fieldType"> <xs:restriction base="xs:string"> <!-- 原有类型 --> <xs:enumeration value="bool"/> <xs:enumeration value="int"/> <xs:enumeration value="fixedData"/> <xs:enumeration value="float"/> <xs:enumeration value="string"/> <xs:enumeration value="crc"/> <xs:enumeration value="unicode"/> <xs:enumeration value="bcd"/> <!-- 新增枚举类型 --> <xs:enumeration value="enum"/> </xs:restriction> </xs:simpleType> ``` 此方案完整保留原有XSD结构,仅通过添加可选元素和属性实现枚举域支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值