我正在研究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"}
答案 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>';
}
<强>输出:强>