我正在使用Struts 2框架,我想将对象列表从Java传输到JSP,然后再传输回Java。转移到JSP工作正常与
我已经检查了这些问题:
使用Struts 2从JSP重新填充ArrayList
在struts2迭代器中填充的列表值列表
- 从Struts2表单提交填充集合
- 填充列表
并遵循了他们的建议。
这是我的“item”类(它的属性不仅仅是名称,但我只显示相关的属性):
类别项目:
private String name;
public Item(){}
public String getName(){ ... };
public void setName(String newName){ ... };
在我的JSP上,我有:
<s:iterator value="items" status="key">
<s:hidden name="items[%{#key.index}].name" value="%{name}" />
</s:iterator>
以下是action类的相关部分:
private List<Item> items = new ArrayList<Item>();
public List<Item> getItems()
{
System.out.println("now getting Items");
if(Items == null)
{
System.out.println("Items is null");
}
else
{
System.out.println("Items is not null. size: " + Items.size());
}
return Items;
}
public void setItems(List<Item> Items)
{
System.out.println("now setting Items");
Items = Items;
}
我100%确信它有所有必要的getter和setter,因为JSP是正确填充的,当我提交表单时,我可以看到(使用日志语句)我的
getItems()
方法对于列表中的每个项(对于表单中的每个输入字段)都被调用一次。奇怪的是,Struts2只为表单中的每个隐藏输入字段获取一次列表,然后拒绝创建Item对象并将其名称设置为给定值。问题不可能是缺少无参数构造函数。
我还添加了一个名为
ActionName转换的转换文件。属性(其中
ActionName
是我的操作类的名称),它与我的ActionName位于同一文件夹中。java
类。
Element_items = Item
CreateIfNull_items = true
可能有什么问题?
如果使用列表
或映射
作为项目集合,则可以按索引引用其元素,而无需使用对象类型确定器
。看见
内置类型转换支持
类型转换由XWork实现。
XWork将自动为您处理最常见的类型转换。这包括对以下每个字符串的转换和转换的支持:
请注意,对于数组,类型转换将遵循数组元素的类型,并尝试单独转换每个项。与任何其他类型转换一样,如果不能执行转换,则使用标准类型转换错误报告来指示在处理类型转换时发生的问题。
如果您想使用高级类型转换(使用ObjectTypeDetminer
)来确定在填充集合时实例化的对象类型,或者通过OGNL表达式中元素的键属性从集合中检索的对象,您应该会看到
收集和地图支持
集合和映射支持为Java集合提供智能的空处理和类型转换。
该框架支持发现集合中元素的对象类型的方法。通过objecttypedeterminator
进行发现。框架提供了一个默认实现。Javadocs解释了如何在defaultobjecttypedeterminator
中发现Map
和Collection
支持。
这个ObjectTypeDecminer
查看用于指示映射和集合中包含哪些对象的条目的Class-conversion.properties
。对于集合,如列表,使用模式Element_xxx
指定元素,其中xxx
是操作或对象中集合属性的字段名。对于Maps,键和值可以分别通过使用模式Key_xxx
和Element_xxx
来指定。
来自WebWork2.1。x、 集合\u xxx
格式仍然受到支持和尊重,尽管它已被弃用,最终将被删除。
此外,通过实现objecttypedeterminator
接口,您可以创建自己的自定义objecttypedeterminator
。还有一个可选的objecttypedeterminator
,它利用Java5泛型。有关更多信息,请参见“注释”页面。
您可以使用ActionClass转换。属性
,并指定类型转换所需的所有属性。如果未指定某些属性,将应用默认值。
在您的情况下,您没有指定键属性,即KeyProperty\u items
,在这种情况下,使用项的
id
属性。如果您没有这样的属性,转换可能会失败。
还可以使用注释进行类型转换。参见示例
从列表中检索值的执行()方法
- 将值从jsp传递到Action forjava.util.Set
- 如何在我的操作中从JSP获得更新的列表值
- 如何使用ModelDriven将值插入Set Collection
还要注意使用OGNL表达式对字段名使用正确的语法,OGNL表达式使用对象引用索引,而不是集合索引引用。这种索引非常适用于列表。它还可以使用高级类型转换。
为什么它起作用不在这个问题的主题之内。当然,你可以修复你的属性并使用高级类型转换,或者删除它并像列表一样使用索引集合。
我正在检索数据库值并将其放入数组列表(al)。该数组列表以表的形式显示在JSP页面中。我想修改JSP页面中的值,并使用Struts2更新数据库中的新值。我该怎么做? 主要行动类 这是POJO班 这是显示数组列表的JSP页面
如何在Android中重新填充ListView 那是我的样本代码。我想重新填充的listview上的公共无效onTextChanged(CharSequence s, int start, int int count)function.ononTextChanged函数,我想填补listview与一个新的字符串数组。
问题内容: 我正在尝试从表单填充bean列表: 因此,在我的Struts2表单中,填充Foo的最佳方法是什么?凭直觉,我想做: 但这不起作用,并且会导致碰撞。我敢肯定答案很简单,而且我忽略了它。 问题答案: 如果我正确理解,您只是想为每个隐藏字段使用不同的名称? 这应该给你相当于 如果您有适当的getter / setter,则应在提交表单时设置所有值。
我有这个jsp代码。 UserList由数据类型为“Car”的名为“car”的属性组成 用户的Pojo类: 我使用的是Spring MVC框架。在页面加载时,我的应用程序应该显示一个包含用户列表的表格。在controller中,我查询用户列表,并将其添加到ModelAndView对象中 控制器代码: 当我尝试不使用car(tabledata标记)时,JSP正在毫无例外地运行,并在表中显示用户列表。
2. 另外,我还面临一个问题,当我在Websphere application server上部署应用程序并以ServerName/ProjectName访问链接时,它会给出一个错误,说明 因此我被迫以ServerName/ProjectName/index.jsp的身份访问应用程序--它运行良好!我不能理解这个问题,因为它不显示在我的本地机器上,只有当我部署它在服务器上。请在我的web.xml下
问题内容: 当我尝试将Servlet中的列表值设置为会话变量并像JSP一样访问它时, 做得到 JSP 我在JSP中遇到错误,因为“列表无法解析为类型” 那我该怎么做呢?我想将列表从Servlet传递到JSP并填充一个下拉列表。 问题答案: 您要导入列表和演员表吗?