我正在尝试使用Struts2-jQuery-grid-3.7.0插件在网格列中填充下拉列表,如下所示。
<s:url id="dataURL" action="CategoryList" namespace="/admin_side"/>
<sjg:gridColumn name="subCategory.category.catName"
index="subCategory.category.catName"
edittype="select"
searchtype="select"
formoptions="{label:'Select'}"
surl="%{dataURL}"
editoptions="{dataUrl : '%{dataURL}'}"
editrules="{required: true}"
title="Category" width="200"
sortable="true" search="true"
editable="true" sorttype="text"/>
并且CategoryList
动作被映射的动作如下。
@Namespace("/admin_side")
@ResultPath("/WEB-INF/content")
@ParentPackage(value="struts-default")
public final class CategoryList extends ActionSupport implements Serializable {
@Autowired
private final transient Service service = null;
private List<Category>categories = new ArrayList<Category>();
private static final long serialVersionUID = 1L;
public List<Category> getCategories() {
return categories;
}
@Action(value = "CategoryList",
results = {
@Result(name = ActionSupport.SUCCESS, location = "Product.jsp"),
@Result(name = ActionSupport.INPUT, location = "Product.jsp")},
interceptorRefs = {
@InterceptorRef(value = "defaultStack", params = {"validation.validateAnnotatedMethodOnly", "true", "validation.excludeMethods", "load"})})
public String load() throws Exception {
System.out.println("load called...");
categories = service.getCatgeoryList();
return ActionSupport.SUCCESS;
}
}
当单击网格上的给定编辑链接时,将在load()
从数据库加载类别列表的位置执行该方法。
然而,网格中的列表在编辑模式下不显示任何内容(单击编辑链接时)。我找不到可以证明这种事情的相关例子。
特别是如何填充这个下拉列表,如何使用catName
属性和值分别使用catId
(Long
类型)属性给出这个下拉标签(而category
在列表中有许多其他属性)?
我没有找到将 a 映射java.util.List<E>
到的相关示例<sjg:grid>
。
subCategory.category.catName
是Product
实体的嵌套属性。
在这种情况下,即使在填充列表之后,也应该注意该列的显示值为catName
(String类型的类别名称)。然而,要设置为实例的所选项目的值Product
应该是catId
(Long 类型的类别 ID),这似乎不可能,因为该列的名称是subCategory.category.catName
.
直观地说,catId
( subCategory.category.catId
) 将被映射到catName
( subCategory.category.catName
) ,如果我可以正确地设想,就好像列表已经填充一样,这将是错误的。