Java 映射中的空值<;字符串,字符串>;

Java 映射中的空值<;字符串,字符串>;,java,dictionary,servlets,null,Java,Dictionary,Servlets,Null,根据以下代码设置地图时出现问题。这样,从用户处接收参数值,但根据相关键在映射中输入值后,将打印null。 请引导我 public class ImportBatchCardRespServlet extends HttpServlet { private static final long serialVersionUID = 1L; private FileOutputStream out; @Override protected void doPost(H

根据以下代码设置地图时出现问题。这样,从用户处接收参数值,但根据相关键在映射中输入值后,将打印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
            
公共类ImportBatchCardRespServlet扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
私有文件输出流输出;
@凌驾
受保护的void doPost(HttpServletRequest-req,HttpServletResponse-resp)引发ServletException,IOException{
试一试{
//Path Path=Path.get(“F:\\”;
System.out.println(“ImportBatchCardRespServlet AccessFilePath:+getInitParameter(“AccessFilePath”);//vahid日志
Path Path=Path.get(getInitParameter(“accessFilePath”);
//列表项=新建ServletFileUpload(新建
//DiskFileItemFactory()).parseRequest(请求);
列表项=新建ServletFileUpload(新建DiskFileItemFactory())
.parseRequest(新的ServletRequestContext(req));
Map formFields=new HashMap();
用于(文件项:项){
if(item.isFormField()){
//处理常规表单字段(输入type=“text | radio | checkbox | etc”,选择,
//等等)。
字符串fieldName=item.getFieldName();
String fieldValue=item.getString();
System.out.println(“req fieldName:+fieldName+”,req fieldValue:+fieldValue);//vahid日志
formFields.put(字段名、字段值);
System.out.println(“映射字段名:“+formFields.get(fieldName)+”,映射字段值:“+formFields.get(fieldValue));//vahid日志
formFields.put(字段名、字段值)

将值/密钥对添加到Hashmap,其中“fieldName”为键,“fieldValue”为值。 在下面一行中

System.out.println("map-fieldName: "+formFields.get(fieldName)+",map-fieldValue: "+formFields.get(fieldValue)); //vahid-log
…似乎您要测试打印密钥/值对。 但是,HashMap的“get”方法参数是键/值对的键,因此

formFields.get(fieldName)
将返回键/值对的值(即fieldValue)和

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

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

干杯!

您确定
item.getString()
总是返回非空值吗?是的。在代码的这一部分System.out.println(“req fieldName:+fieldName+”,req fieldValue:+fieldValue”);值返回正确。仅在调用“formFields”对象(formFields.put(fieldName,fieldValue);)和println中的“put”方法之后“fieldValue”(formFields.get(fieldValue))返回一个空值!好的。我意识到了。谢谢
System.out.println("map-fieldName: "+fieldName+",map-fieldValue: "+formFields.get(fieldName)); //vahid-log