我有一个从Map<创建的JSP。字符串,双> map
可能在不同请求中具有不同的值。
JSP显示:
key --> Mutable input field with value for that key
迭代地图的元素。在表单的底部,我有一个提交按钮,调用(POST)一个更新地图中所有值的servlet。
我如何获取变量参数列表,因为我不知道他们的姓名,来自帖子请求?
现在我正在考虑执行以下操作(使用伪代码并忽略格式化异常):
Map params = request.getParameterMap();
Set<Entry<String, Double>> set = params.entrySet();
Iterator<Entry<String, Double>> it = set.iterator();
while (it.hasNext()) {
Entry<String, Double> e = it.next();
if (map.containsKey(e.getKey()));
map.put(e.getKey(), e.getValue());
}
是否有更快或更好的方法从servlet中的jsp获取动态数据?
答案 0 :(得分:1)
我不知道它是否更快或更好,但您可以将地图转换为JSON,然后将该字符串作为单个参数传递回您的servlet,而不必检索参数映射。然后在您的servlet中,您可以将参数字符串加载到JSON数组或其他内容中,然后遍历它。
我认为这是一种更好的方法的原因是因为您可以在将来向servlet传递更多参数,而不必在while循环中放置条件而不将其作为Entry集计数。
//Create array
Map map = new LinkedHashMap();
JSONArray jArray = new JSONArray();
map.put("id", "asdf");
map.put("name", "bbbdasfadsbb");
map.put("address", "sadfasdfasdf");
map.put("phone", "asdfdsafsdf");
map.put("details", "asdasdf");
map.put("randomText", "sdafasdfs");
jArray.put(map);
//You can write this string out to a hidden field
//called mapAsJSONArray
String mapAsJSONArray = jArray.toJSONString();
//.......
//Then in your servlet....
String mapAsJSONArray = request.getParameter("mapAsJSONArray");
JSONArray jsonArray = new JSONArray(mapAsJSONArray);
for (int i = 0; i < jsonArray.length(); ++i) {
JSONObject obj = jsonArray.getJSONObject(i);
String id = obj.getString("id");
// ...
}