【问题标题】:null value in Map<String,String>Map<String,String> 中的空值
【发布时间】:2020-07-29 14:35:19
【问题描述】:

我根据以下代码设置地图时遇到问题。这种方式是从用户那里接收到参数的值,但是根据相关的key在map中输入值后,打印出null。 请指导我

public class ImportBatchCardRespServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;
    private FileOutputStream out;

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        try {
            // Path path = Paths.get("F:\\");
            System.out.println("ImportBatchCardRespServlet-AccessFilesPath: " + getInitParameter("AccessFilesPath")); // vahid-log
            Path path = Paths.get(getInitParameter("AccessFilesPath"));

            // List<FileItem> items = new ServletFileUpload(new
            // DiskFileItemFactory()).parseRequest(request);
            List<FileItem> items = new ServletFileUpload(new DiskFileItemFactory())
                    .parseRequest(new ServletRequestContext(req));
            Map<String,String> formFields = new HashMap<>();
            
            for (FileItem item : items) {
                if (item.isFormField()) {
                    // Process regular form field (input type="text|radio|checkbox|etc", select,
                    // etc).
                    String fieldName = item.getFieldName();
                    String fieldValue = item.getString();
                    System.out.println("req-fieldName: "+fieldName+",req-fieldValue: "+fieldValue); //vahid-log
                    formFields.put(fieldName,fieldValue);
                    System.out.println("map-fieldName: "+formFields.get(fieldName)+",map-fieldValue: "+formFields.get(fieldValue)); //vahid-log
            

【问题讨论】:

  • 你确定item.getString() 总是返回一个非空值吗?
  • 是的。在这部分代码中 System.out.println("req-fieldName:" + fieldName + ", req-fieldValue:" + fieldValue);返回值正确。
  • 只有在 "formFields" 对象 (formFields.put(fieldName,fieldValue);) 中调用 "put" 方法和 println "fieldValue" (formFields.get(fieldValue)) 后才返回空值!

标签: java dictionary servlets null


【解决方案1】:

formFields.put(fieldName,fieldValue);

向您的 Hashmap 添加一个值/键对,其中“fieldName”是键,“fieldValue”是值。 在以下行中...

System.out.println("map-fieldName: "+formFields.get(fieldName)+",map-fieldValue: "+formFields.get(fieldValue)); //vahid-log

...您似乎想测试打印键/值对。 但是HashMap的“get”方法参数是键值对的key,因此

formFields.get(fieldName)

将返回键/值对(即fieldValue)的

formFields.get(fieldValue)

可能会返回 null,因为没有与值同名的键。 使用此检查行应该可以得到正确的输出:

System.out.println("map-fieldName: "+fieldName+",map-fieldValue: "+formFields.get(fieldName)); //vahid-log

干杯!

【讨论】:

  • 好的。我意识到。感激不尽
猜你喜欢
  • 2013-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-01
  • 1970-01-01
相关资源
最近更新 更多