Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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.lang.ArrayIndexOutOfBoundsException:1_Java_Spring Mvc - Fatal编程技术网

将错误获取为java.lang.ArrayIndexOutOfBoundsException:1

将错误获取为java.lang.ArrayIndexOutOfBoundsException:1,java,spring-mvc,Java,Spring Mvc,我正在尝试运行下面的代码,但由于下面的错误而失败。我无法找出哪里出了问题。请帮忙。 错误:java.lang.ArrayIndexOutOfBoundsException:第37行为1 代码: package com.ugam.filter.repository; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.sprin

我正在尝试运行下面的代码,但由于下面的错误而失败。我无法找出哪里出了问题。请帮忙。 错误:java.lang.ArrayIndexOutOfBoundsException:第37行为1

代码:

package com.ugam.filter.repository;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.env.Environment;

import com.ugam.domain.filter.FilterTemplate;


@Configuration
@PropertySource("classpath:properties/filterTemplate.properties")
public class FilterTemplateRepository  {
    @Autowired
    private Environment env;

    @Bean
    public Map<String,List<FilterTemplate>> getBean()
    {

        Map<String,List<FilterTemplate>> filterTemplateMap=new HashMap<String,List<FilterTemplate>>();
        String moduleName=env.getProperty("module");
        for(String eachmoduleName : moduleName.split(",")){
            String templateName=env.getProperty(eachmoduleName + ".templateNames");
            List<FilterTemplate> filterTemplatelist=new ArrayList<FilterTemplate>();
            for (String eachtemplateNames : templateName.split(",")) {
                String templateNameFields[] = env.getProperty(eachmoduleName + "." + eachtemplateNames).split(",");
                FilterTemplate filterTemplate=new FilterTemplate();
                filterTemplate.setTemplateHtml(templateNameFields[0]);
                filterTemplate.setClassSelect(templateNameFields[1]);
                filterTemplatelist.add(filterTemplate);
            }
            filterTemplateMap.put(eachmoduleName, filterTemplatelist);
        }
        return filterTemplateMap;

    }


    public List<FilterTemplate> getModuleData(String moduleName)
    {

        return getBean().get(moduleName);
    }
}

你确信:

 env.getProperty(eachmoduleName + "." + eachtemplateNames)
是否包含带有逗号的值?如果没有,则
filterTemplate.setClassSelect(templateNameFields[1])将显示您的异常

编辑开始:

您的数据包含
dashboard.templateHtml2=dcsFilterOptions.html.html,

不包含“,”逗号,但正则表达式将忽略逗号后的空值。您可能希望使用“完整”版本,该版本将返回表示输入字符串中空值的空字符串值

编辑结束:

您需要更加“防御性”地编程,并期待意外:

            // add a default value "" if the property is not set.
            String value = env.getProperty(eachmoduleName + "." + eachtemplateNames, "");
            String templateNameFields[] = value.split(",");
            if (templateNameFields.length != 2) {
                 // log an error or something
                 continue; // move on to valid data.
            }
            FilterTemplate filterTemplate=new FilterTemplate();
            filterTemplate.setTemplateHtml(templateNameFields[0]);
            filterTemplate.setClassSelect(templateNameFields[1]);
在这条线上

filterTemplate.setClassSelect(templateNameFields[1]);
它失败,因为它没有“类选择”


向我们显示属性文件中的属性。是否确定每次调用
env.getProperty(eachmoduleName+“+”+eachtemplateNames).split(“,”)时至少有一个
?在假设至少有2个元素之前,请检查数组长度。是的,templateNameFields[1]表示数组至少有2个元素长(即其中有一个逗号),@SteveCohen这意味着什么?这只意味着OP在那里需要2个元素,而不是它们真的在那里。第37行是什么?事实上,从新发布的属性文件判断,这正是TemplateHtml2Editiond建议String.split(…,-1)的情况
filterTemplate.setClassSelect(templateNameFields[1]);
dashboard.templateHtml2=dcdcsFilterOptions.html.html,