为了让系统知道List里的元素类型,为了让系统的类型转换器起作用,有两种方法:
1、使用泛型来限制集合里元素的类型;eg:在Action类代码中关于user属性的泛型定义为:private List<user> user;
2、使用Struts2的配置文件:使用局部类型转换的配置文件来指定集合元素的数据类型。
为了在局部类型转换文件中指定集合元素的类型,应该在局部类型转换文件中增加如下的key-value对:
Element_xxx = 复合类型 (说明:key-value对中的Element是固定的,xxx是Action中的集合属性名,复合类型是集合元素类型的全限定数类名[应该增加完整的包前缀])
eg:Element_user = lee.User //指定Action类的user集合属性的元素为lee.User实例
下面先介绍一下局部类型转换器的注册,要注册类型转换吕只需提供文件名为如下格式的文件:
ActionName-conversion.properties:ActionName是需要转换器第一次的Action的类名,后面的-conversion.properties字符串则是固定部分。
eg:对于LoginAcion.java类,则应该提供的类型转换器注册文件的文件名为:LoginAction-conversion.properties,该文件由key-value对组成。文件内容为: propertyName=类型转换器类
LoginAction-conversion.properties文件应该与LoginAction.java文件放在相同路径下(如LoginAction.java的包为lee,则该文件也应放在包lee内)。
这么多文字描述还是没有来一个实例要讲的清楚,要让人容易明白,嘿嘿,现在下面就来个实例看看吧!!
FeeItemAction.java
package lee;
public class FeeItemAction extends ActionSupport implements ServletRequestAware
{
private HttpServletRequest request;
private List<StkMasModel> modelList;//提交list
public String execute() throws Exception
{
FeeItem feeItem = new FeeItemImp();
if(modelList != null && modelList.size() > 0)
{
for(StkMasModel model:modelList)
{
feeItem = new FeeItemImp();
feeItem.setStkPkNo(model.getStk_pk());
feeItem.setCatName(model.getCatName());
feeItem.setCatPkNo(model.getCatPkNo());
feeItem.setStkName(model.getName());
itemService.saveOrUpdateFeeItem(feeItem);
}
}
else
{
log.warn("*********The size of model less than zero!********");
} }
public void setServletRequest(HttpServletRequest request)
{
this.request = request;
}
public List<StkMasModel> getModelList()
{
return modelList;
}
public void setModelList(List<StkMasModel> modelList)
{
this.modelList = modelList;
}
}
FeeItemAction-conversion.properties
Element_modelList=lee.StkMasModel
StkMasModel.java
package lee;
public class StkMasModel
{
private Long stk_pk;
private String catName;
private Long catPkNo;
private String name;
public String getCatName()
{
return catName;
}
public void setCatName(String catName)
{
this.catName = catName;
}
//省略了其它的get 和set...
}
list.jsp
<form action="saveFeeItems.html" id="saveFeeItemsForm" method="post">
<s:iterator status="st" value="#request.reList" id="stkList">
<input type="hidden" name="modelList[${st.index}].stk_pk" value=''>
<input type="hidden" name="modelList[${st.index}].catName" value=''>
<input type="hidden" name="modelList[${st.index}].catPkNo" value=''>
<input type="hidden" name="modelList[${st.index}].name" value=''>
</s:iterator>
<input type="submit" value="提交">
</form>
以上文件为对应关系。
分享到:
相关推荐
这个Bean应该包含一个List属性,例如`List<Product>`,其中Product是另一个Bean,包含了商品的各个属性。在表单提交后,Struts的默认数据绑定机制会尝试将请求参数自动绑定到ActionForm的属性上。 接着,Action类会...
这里,我们为每个表单字段定义了一个动态的属性名,如`items[0].name`和`items[1].description`,这使得Struts在处理POST请求时能够将这些值映射到一个List类型的属性上。假设我们有一个名为Item的类,它有name和...
例如,有一个`Student`实体类,其中包含一个`Course`的List。Spring Boot通过Jackson库自动将JSON转换为Java对象。创建对应的实体类和控制器方法,如下所示: ```java public class Student { private String name...
本篇将详细介绍如何通过AJAX来传递一个List对象数组,并解析其中涉及到的关键技术点。 #### 二、知识点概览 1. **前端JavaScript处理List对象数组** 2. **使用jQuery的$.ajax方法发送POST请求** 3. **后端接收List...
以下是一个例子,展示如何将List存入SharedPreferences: 1. 序列化: ```java public static String serializeList(List<String> list) { Gson gson = new Gson(); return gson.toJson(list); } ``` 这里我们...
标题 "保存一个list" 暗示我们关注的是在编程中如何持久化存储一个列表(List)对象。在这个场景中,列表可能包含了各种数据类型,如整数、字符串或者其他复杂对象。保存列表是为了防止程序关闭后丢失数据,或者在...
然后使用`edit()`方法创建一个可编辑的SharedPreferences.Editor对象,进行数据的添加、修改、删除操作,最后调用`commit()`或`apply()`来提交更改。 在处理List数据时,由于SharedPreferences不直接支持List类型的...
struts2 向action提交list.html
首先,理解这个过程的关键在于Alist和qBittorrent的集成以及Docker容器之间的通信。 1. **配置Alist连接qBittorrent** - 首先进入Alist管理界面,选择“管理”选项。 - 在“设置”中找到“其他”,在这里输入...
首先,我们创建一个`CheckBoxList`控件。在ASP.NET的`.aspx`页面中,你可以这样定义它: ```html <asp:CheckBoxList ID="CheckBoxList1" runat="server"> <asp:ListItem Value="1" Text="Option 1"></asp:ListItem...
`CheckBoxList`是ASP.NET Web Forms框架中的一个控件,它允许用户从一系列复选框中进行选择。这些复选框通常用来收集用户的选择偏好或者多选数据。与普通的单个复选框不同,`CheckBoxList`提供了一个方便的方式来...
在Struts1中,ActionForm类需要有一个对应的List字段来接收这些值,这样在提交表单时,Struts1的默认Binding机制会自动将这些值绑定到List中。 4. **配置文件**: 配置文件(struts-config.xml)需要添加相应的...
首先,我们需要创建一个工具类,用于序列化和反序列化`List, List<String>>>`。通常我们可以使用`Gson`库来实现这个功能,因为它提供了方便的JSON转换方法。如果你的项目中还没有引入Gson库,可以在build.gradle文件...
在网页开发中,防止用户意外或恶意重复提交数据是一个重要的考虑因素。这可能导致数据库中的冗余数据,甚至可能对服务器造成不必要的压力。本篇文章将详细探讨如何使用JavaScript来控制页面的重复提交,确保每个表单...
在这个主题中,"RadioButtonListHelper"可能是一个用于辅助处理RadioButtonList(单选按钮列表)的类或方法,虽然它不是CheckboxList,但可能提供了类似的功能增强,比如数据绑定、样式定制、事件处理等,帮助开发者...
当用户提交表单时,我们可以获取这些值并将它们添加到list中,然后重定向到另一个Action。 1. **接收表单数据**:在Action中,我们需要定义与表单元素对应的属性,并使用Struts2的注解进行绑定: ```java ...
a 选项指定作业提交的日期和时间,-c 选项指定作业的检查点间隔,-C 选项指定directive prefix ,-e 选项指定标准错误信息的重定向路径,-I 选项以交互方式运行作业,-j 选项将标准输出信息和标准错误信息合并到一个...
通过使用 `CheckBoxList` 控件,用户可以选择其中的一个或多个选项。这种控件非常适合于需要收集用户关于多个选择的数据场景。 #### 二、遍历 CheckBoxList 控件的项 在 ASP.NET 中,可以通过访问 `CheckBoxList....
mybatis框架在执行批量插入或者更新的时候限制入参...突破mybatis批处理数据量2100个的限制,另一个应用场景是,即使没有用到mybatis,也可以作为自动分批提交的工具,防止一次性提交数据过大导致数据库自动提高锁级别
然而,将List控件的内容打印出来并不是一个简单的过程,因为VC++的打印机制相对复杂,特别是涉及到对话框(Dialog-based)程序时。本文将深入探讨如何利用VC++实现List控件的打印功能,并提供一个可能的解决方案。 ...