Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用getOrDefault()时,我没有得到默认值_Java_Jsp_Spring Mvc - Fatal编程技术网

Java 使用getOrDefault()时,我没有得到默认值

Java 使用getOrDefault()时,我没有得到默认值,java,jsp,spring-mvc,Java,Jsp,Spring Mvc,如果我在文本框页面中提供了一些值,那么我就得到了正确的输出, 但如果我没有在我想要的文本框中提供任何值,它将打印默认值 为此,我使用Map类的getOrDefault()方法,但仍然没有得到默认值 StudentAdministrationController.java package com.diwakar; 导入java.util.Map; 导入org.springframework.stereotype.Controller; 导入org.springframework.web.bind.

如果我在文本框页面中提供了一些值,那么我就得到了正确的输出, 但如果我没有在我想要的文本框中提供任何值,它将打印默认值

为此,我使用Map类的getOrDefault()方法,但仍然没有得到默认值

StudentAdministrationController.java
package com.diwakar;
导入java.util.Map;
导入org.springframework.stereotype.Controller;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RequestMethod;
导入org.springframework.web.bind.annotation.RequestParam;
导入org.springframework.web.servlet.ModelAndView;
@控制器
公共班级学生管理员{
@RequestMapping(value=“/acmission.html”,method=RequestMethod.GET)
公共模型和视图获取许可表单(){
ModelAndView模型=新的ModelAndView(“许可表”);
收益模型;
}
@RequestMapping(value=“/submitForm”,method=RequestMethod.POST)
公共模型和视图提交任务表单(@RequestParam-Map-reqParm){
字符串名称=reqParm.(“studentName”,“默认名称”);
字符串hobby=reqParm.getOrDefault(“studentHobby”,“defaulthobby”);
ModelAndView模型=新的ModelAndView(“许可成功”);
model.addObject(“msg”,“您提交的详细信息,名称:“+Name+”,爱好为:“+hobby”);
收益模型;
}
}
spring-dispatcher-servlet.xml

输出为 恭喜你!详情已提交

您提交的详细信息,姓名:和爱好是:

与仅在没有映射时返回默认值不同,您可能有一个到空字符串的映射,您应该使用自定义代码进行检查,或者构建一个方法:

private static String getOrDefaultIfEmpty(Map<String,String> map, String key, String def)
    {
        String v = map.get(key);
        return v==null || v.length()==0 ? def : v;
    }
私有静态字符串getOrDefaultIfEmpty(映射映射、字符串键、字符串定义)
{
字符串v=map.get(键);
返回v==null | | v.length()==0?def:v;
}
您需要执行此检查,因为空HTML文本框作为参数发送创建映射的空字符串,因此您不会得到默认值,而是一个空字符串。

仅当没有映射时返回默认值,您可能有到空字符串的映射,您应该使用自定义代码进行检查,也许构建一种方法:

private static String getOrDefaultIfEmpty(Map<String,String> map, String key, String def)
    {
        String v = map.get(key);
        return v==null || v.length()==0 ? def : v;
    }
私有静态字符串getOrDefaultIfEmpty(映射映射、字符串键、字符串定义)
{
字符串v=map.get(键);
返回v==null | | v.length()==0?def:v;
}

您需要执行此检查,因为空HTML文本框会将创建映射的空字符串作为参数发送,因此您不会得到默认值,而是一个空字符串。

感谢@testo的响应,但如果我想单独使用此方法进行检查,如果我出错请更正此方法返回指定键映射到的值,如果此映射不包含键的映射,则返回defaultValue。在我的应用程序中,有一个名为studentHobby的文本框,我没有提供任何内容。它将检查是否有任何值与该名称关联,如果没有,它将打印第二个参数,即默认值String hobby=reqParm.getOrDefault(“studentHobby”,“default hobby”);上述方法是否错误,。。?如果是,那怎么办。我不明白。根据oracle文档,它应该打印第二个参数,即默认值。如果我只想使用这个字符串hobby=reqParm.getOrDefault(“studentHobby”,“defaulthobby”);有人能帮我解决这个问题吗?我更新了答案。空文本框发送一个空字符串,而不是“nothing”,谢谢@testo的响应,但是如果我想单独使用此方法进行检查,请更正我的错误。如果此方法返回指定键映射到的值,或者如果此映射不包含键的映射,则返回defaultValue。在我的应用程序中,有一个名为studentHobby的文本框,我没有提供任何内容。它将检查是否有任何值与该名称关联,如果没有,它将打印第二个参数,即默认值String hobby=reqParm.getOrDefault(“studentHobby”,“default hobby”);上述方法是否错误,。。?如果是,那怎么办。我不明白。根据oracle文档,它应该打印第二个参数,即默认值。如果我只想使用这个字符串hobby=reqParm.getOrDefault(“studentHobby”,“defaulthobby”);有人能帮我解决这个问题吗?我更新了答案。空文本框发送空字符串,而不是“nothing”
private static String getOrDefaultIfEmpty(Map<String,String> map, String key, String def)
    {
        String v = map.get(key);
        return v==null || v.length()==0 ? def : v;
    }