Java 映射中的空值<;字符串,字符串>;
根据以下代码设置地图时出现问题。这样,从用户处接收参数值,但根据相关键在映射中输入值后,将打印null。 请引导我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
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