在对象的javascript下拉列表中显示一个值
Display a value in a javascript dropdown list from an object
我有一个javascript下拉列表,它是根据对象的"name"字段填充的。是否可以将整个对象放在下拉列表中,只显示名称?我之所以这么问,是因为我想根据用户选择的内容更改另一个下拉列表的值,并且该信息在第一个对象中已经可用(在我去掉名称之前)。
所以现在我有这个(Java控制器):
List<String> hostsList = new ArrayList<String>();
for (Client client : adminService.getClients()){
hostsList.add(client.getName());
}
result.put("hostsList", hostsList);
然后在javascript方面:
<form:form id="iForm" method="post"
action="${pageContext.request.contextPath}/host"
commandName="hostsForm">
<td valign="top">Hosts:</td>
<td valign="top"><form:select path="uSetHostName">
<form:option value="NONE" label="--- Select ---" />
<form:options items="${hostsList}" />
</form:select>
</td>
那么,我如何将整个对象放入下拉列表中并只显示其名称呢?
谢谢,
据我所知,您要求将Java对象转换为JavaScript对象,以便稍后在JavaScript中使用该对象来驱动下拉值。
有几种方法可以做到这一点。第一种方法是将每个Java Client
对象表示为JavaScript对象,然后用JavaScript填充这两个下拉列表。这可能是使用某种JSON库(如Gson或Jackson)最简单的方法。下面是一个使用JQuery和Gson的示例:
<script lang="text/javascript">
var clients = <%= new Gson().toJson(clients) %>;
// Fill the first dropdown.
$("#myDropdown").empty();
$.each(clients, function() {
$("<option/>").attr("value", this.id).text(this.name).appendTo("#myDropdown");
});
$("#myDropdown").on("change", function(event) {
var selectedClientId = $("#myDropdown").val();
var client = $.grep(clients, function(client) {
return client.id = selectedClientId;
});
$("#myOtherDropdown").val(client.someOtherValue);
});
</script>
...
<select id="myDropdown" name="..."></select>
...
<select id="myOtherDropdown" name="..."></select>
第二种方法是准确地执行您现在正在执行的操作,然后将填充另一个下拉列表所需的最小数量的Client
对象放入JavaScript代码中。看起来像这样:
<script lang="text/javascript">
var clientIdToOtherValueMap = {
<%
for (Client client : clients) {
%>
'<%= client.id %>': '<%= client.otherDropdownId %>',
<%
}
%>
'': ''
};
// Fill the first dropdown.
$("#myDropdown").on("change", function(event) {
$("myOtherDropdown").val(clientIdToOtherValueMap[$("#myDropdown").val()]);
});
</script>
...
<select id="myDropdown" name="..."></select>
...
<select id="myOtherDropdown" name="..."></select>
希望这能帮助你开始!
相关文章:
- 使用地理位置创建一个显示我当前位置的按钮
- 希望创建一个显示日期+5天和日期+10天之间交付的javascript
- Jquery下拉菜单位于幻灯片上方的一个显示位置
- 当另一个显示时加载HTML而不修改他
- 如何创建一个显示在窗口底部角落的DIV(经过一段时间后)
- 无限旋转木马与下一个和上一个显示
- 三个.js双视口只有一个显示
- i18下一个显示的键而不是值
- 我需要一个显示pdf的解决方案
- 如何制作一个显示必应翻译API结果的简单网页
- 如何添加一个显示/隐藏注释链接不工作与下划线.js
- Flex -调用JavaScript函数并打开一个显示数据的弹出窗口
- 如何创建一个显示当前网页截图的打印对话框
- 在谷歌地图上设置一个显示标记的区域
- Javascript -在点击时显示另一个元素时隐藏一个显示元素
- 创建一个显示/隐藏项目的复选框系统-如何
- 两个不同的谷歌地图在一个页面上,但只有一个显示
- 如何使用jQuery/Javascript创建一个显示输入滑块值的动态文本区
- 如何制作一个显示英国时间的时钟,但整个应用程序都是印度时间
- 将imsg src从一个更改为另一个显示'轻弹'