我们如何使用Dojo设置对struts2 select的ajax响应

时间:2014-07-08 12:03:16

标签: jquery ajax struts2 dojo

我正在研究dojo和Struts2,面临一个问题。 动态地进行ajax调用并以JSON格式获取响应并包含许多键值对,想要将此响应设置为Strut2 select

您能否就此问题提供帮助,我该如何解决这个问题?

Struts选择Tag:

<s:select id="empindex"  list="#{EmployList}" name="Employ" listKey="key" listValue = "label"  emptyOption="true" value="%{destination.key.toString()}" />

Ajax:

employs.ajax.fireJavaScriptRequest("getEmploys.action", {}, function(details) { 
     dojo.byId("empindex").innerHTML=details;
     }); 

JSON响应:

{"Employs":[{"label":"Test1","key":123},{"label":"Test2","key":345},{"label":"Test3","key":567}],"identifier":"key"}

1 个答案:

答案 0 :(得分:1)

回答编辑

在您的jsp文件中,您可以使用jquery填充组合框。

代码已更新

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script> 
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/json3/3.3.2/json3.min.js"></script>
<script type="text/javascript">
loadEmplDropDown();
function loadEmplDropDown() {

            $.getJSON("getEmploys.action", function(details) {
                //convert json in html and set html
                var options = '<option value="' + "--Select--" + '">'
                        + "--Select--" + '</option>';

                for ( var i = 0; i < details.employs.length; i++) {
                    //alert(details.employs[i].key);
                    options += '<option value="' + details.employs[i].key + '">'
                            + details.employs[i].label + '</option>';
                }
                $("select#empindex").html(options);//or dojo.byId("empindex").innerHTML=options;

            });
        }
  </script>
  <s:select id="empindex"  list="#{EmployList}" name="Employ" listKey="key" listValue = "label"  emptyOption="true" value="%{destination.key.toString()}" />

注意: 1.尝试使用Capital E,因为在你的json中它是Employs而不是employes

     for ( var i = 0; i < details.Employs.length; i++) {
                    //alert(details.Employs[i].items.key);
                    options += '<option value="' + details.Employs[i].key + '">'
                            + details.Employs[i].label + '</option>';
                }

<强>输出:

output