5

我正在尝试使用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属性和值分别使用catIdLong类型)属性给出这个下拉标签(而category在列表中有许多其他属性)?

我没有找到将 a 映射java.util.List<E>到的相关示例<sjg:grid>


subCategory.category.catNameProduct实体的嵌套属性。

在这种情况下,即使在填充列表之后,也应该注意该列的显示值为catName(String类型的类别名称)。然而,要设置为实例的所选项目的值Product应该是catId(Long 类型的类别 ID),这似乎不可能,因为该列的名称是subCategory.category.catName.

直观地说,catId( subCategory.category.catId) 将被映射到catName( subCategory.category.catName) ,如果我可以正确地设想,就好像列表已经填充一样,这将是错误的。

4

2 回答 2

3
于 2014-03-07T11:03:52.007 回答
0

关于与gridColumn财产editoptions相关的文件:

数据网址

此选项仅对 select 类型的元素有效 - 即 edittype:select 并且应该是获取 select 元素的 AJAX 数据的 URL。数据是通过 AJAX 调用获得的,并且应该是一个有效的 HTML 选择元素,带有所需的选项 One…。您可以使用选项组。

您的操作必须返回有效select元素。这意味着,您的Product.jsp结果需要如下所示:

<%@ taglib prefix="s" uri="/struts-tags"%>
<s:select list="categories" key="id" value="name"/>

参考:http ://www.trirand.com/jqgridwiki/doku.php?id=wiki:common_rules

于 2014-02-25T06:21:46.020 回答