Jquery使用Struts2 UI标记选择框值

时间:2012-06-18 05:53:13

标签: jquery struts2 jquery-selectbox

在jsp页面中,我有一个选择输入,它从Struts2动作获取值,我使用Struts2迭代器标记来获取值。

<select id="package-type-input" name="packageTypeId">
    <gs:iterator var="package" value="" id="test-iterator">
       <option value='<gs:property value="#package.id"/>'  
       <gs:property value="#package.packagename"/></option>
    </gs:iterator>
</select>

我从struts2操作中获取值作为List packagesList。我试图使用下面的行将这些值添加到迭代器。但它不起作用

$("#test-iterator").val(packageList). 

ajax调用是

_getAccountDetails: function () {
    var self = this;
    var organizationId = self.id;
    $.ajax({
        type: "POST",
        url: self.url.getOrgPackageDetails,
        dataType: 'json',
        traditional: true,
        data: "organizationId=" + organizationId,
        success: function (response) {
            self._setData(response.data,response.packageList);
        },
        error: function (response) {}
    });
},

response.packageList是java Array列表的jsonified形式。 setData方法将response.data中的数据设置到各自的字段中。

_setData: function (data, packageList) {
    var self = this;
    self.dom.currentPackageType.val(data.CurrentPackage);
    self.dom.currentUsersLimit.val(data.Users);
    self.dom.currentEntityLimit.val(data.Entities);
    self.dom.CurrentRenewalDate.val(moment(data.RenewDate).calendar());
    self.dom.currentQEntityLimit.val(data.QEntity);
    self._bindGUIEvents()
},

1 个答案:

答案 0 :(得分:1)

您可以使用s2 select标签轻松完成,此处不需要迭代器标记

<gs:select
       id="package-type-input" 
       name="packageTypeId"
       list="packageList"
       listKey="id"
       listValue="packagename"
/>

查看select tag description

另外,只要您有疑问,请关注Tag Reference

至于您编辑的帖子: 在_setData功能

$.each(packageList, function(i,package){
    var option = $("<option value="+package.id+">"+package.packagename+"</option>");
    $("#package-type-input").append(option);
});