我有一个从 Map < String, Double> map
创建的 JSP,它在不同的请求上可能有不同的值。
JSP 显示:
key --> Mutable input field with value for that key
通过迭代 map 的元素。在表单的底部,我有一个提交按钮,用于调用 (POST) 更新 map 中所有值的 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 获取动态数据?
最佳答案
我不知道它是否更快或更好,但您可以将映射转换为 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");
// ...
}
关于java - JSP/Servlet 获取表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9676500/