Spring 模型的引导属性未加载到 JSP 页面

Spring Boot attributes of the Model are not loaded on JSP page

我很绝望,我正在按照所有教程和文档进行操作,我成功地创建了一个小的 hello 控制器 spring 启动,但是当我尝试在我的项目上使用 spring 启动时,spring Model/Modelview 的所有属性都没有加载,我不知道为什么. 这是我的 pom.xml:

<?xml version="1.0" encoding="UTF-8"?>

http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0

<groupId>com.github.p4535992</groupId>
<artifactId>springMVC12</artifactId>
<version>1.6.10</version>
<packaging>war</packaging>

<name>springMVC12</name>
<description>Demo project for Spring Boot using JSPs</description>

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.3.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
    <!-- Generic properties -->
    <downloadSources>true</downloadSources>
    <downloadJavadocs>true</downloadJavadocs>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.build.outputEncoding>UTF-8</project.build.outputEncoding>
    <java.version>1.8</java.version>
    <!-- Version of the Maven properties -->
    <maven-eclipse-plugin.version>2.9</maven-eclipse-plugin.version>
    <maven-compiler-plugin.version>2.3.2</maven-compiler-plugin.version>
    <maven-source-plugin.version>2.3</maven-source-plugin.version>
    <maven-javadoc-plugin.version>2.3</maven-javadoc-plugin.version>
    <maven-war-plugin.version>2.6</maven-war-plugin.version>
    <maven-exec-plugin.version>1.1.1</maven-exec-plugin.version>
    <maven-tomcat7-plugin.version>2.2</maven-tomcat7-plugin.version>
    <maven-dependency-plugin.version>2.10</maven-dependency-plugin.version>

    <mysql.version>5.1.6</mysql.version>
    <javax.servlet.jstl.version>1.2</javax.servlet.jstl.version>
    <!-- Json-->
    <json-path.version>2.0.0</json-path.version>
    <com.fasterxml.jackson.core.version>2.5.3</com.fasterxml.jackson.core.version>
    <!-- Logging -->
    <spring-boot-starter-logging.version>1.2.4.RELEASE</spring-boot-starter-logging.version>
    <!-- Test -->
    <junit.version>4.12</junit.version>
    <com.github.dandelion.version>0.10.1</com.github.dandelion.version>
    <!-- Apache and Commons -->
    <commons-fileupload.version>1.3.1</commons-fileupload.version>
    <commons-io.version>2.4</commons-io.version>
    <commons-codec.version>1.10</commons-codec.version>

    <!-- UTILITY Github -->
    <com.github.p4535992.utility.version>1.6.10</com.github.p4535992.utility.version>
    <!--<com.github.p4535992.gate-basic.version>1.6.5</com.github.p4535992.gate-basic.version>-->
    <com.github.p4535992.ExtractInfo.version>1.6.10</com.github.p4535992.ExtractInfo.version>

    <start-class>com.github.p4535992.mvc.JspDemoApplication</start-class>
   <!-- <tomcat.version>7.0.52</tomcat.version>-->

</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.github.p4535992</groupId>
            <artifactId>extractInfo</artifactId>
            <version>${com.github.p4535992.ExtractInfo.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.github.p4535992</groupId>
                    <artifactId>utility</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.github.p4535992</groupId>
            <artifactId>utility</artifactId>
            <version>${com.github.p4535992.utility.version}</version>
            <exclusions>
                 <exclusion>
                     <groupId>org.springframework</groupId>
                     <artifactId>*</artifactId>
                 </exclusion>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>

    <!-- Other Spring boot dependency -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <!--<scope>provided</scope>-->
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
    </dependency>

    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
      <!--  <scope>provided</scope>-->
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-logging</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
       <!-- <scope>provided</scope>-->
    </dependency>
   <!-- <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>-->
    <!--<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>-->

    <!-- Github dependency -->
    <dependency>
        <groupId>com.github.p4535992</groupId>
        <artifactId>extractInfo</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.p4535992</groupId>
        <artifactId>utility</artifactId>
    </dependency>

    <!-- MySQLDatabase -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
    </dependency>

    <!-- ===================== -->
    <!-- Needed for JSON View  -->
    <!-- ===================== -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>${com.fasterxml.jackson.core.version}</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>${com.fasterxml.jackson.core.version}</version>
    </dependency>
    <!-- Need for get json response with controller -->
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>${com.fasterxml.jackson.core.version}</version>
    </dependency>
    <dependency>
        <groupId>com.jayway.jsonpath</groupId>
        <artifactId>json-path</artifactId>
        <version>${json-path.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- Dandelion -->
    <dependency>
        <groupId>com.github.dandelion</groupId>
        <artifactId>datatables-jsp</artifactId>
        <version>${com.github.dandelion.version}</version>
    </dependency>

    <!-- Test -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
    </dependency>


    <!-- Apache and Commons -->
    <!-- NOTE: commons-dbcp replace from tomcat-jdbc -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>${commons-fileupload.version}</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>${commons-io.version}</version>
    </dependency>
    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>${commons-codec.version}</version>
    </dependency>

    <!-- Needed for PDF View -->
    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>4.2.1</version>
    </dependency>

    <!-- Needed for XLS View -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.10-beta2</version>
    </dependency>

    <!-- Needed for RSS View-->
    <dependency>
        <groupId>com.rometools</groupId>
        <artifactId>rome</artifactId>
        <version>1.5.0</version>
    </dependency>

    <dependency>
        <groupId>org.apache.taglibs</groupId>
        <artifactId>taglibs-standard-impl</artifactId>
        <version>1.2.5</version>
    </dependency>

</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>

        <!-- ****************************************-->
        <!-- Copy dependency jar to a m2 folder  -->
        <!-- ****************************************-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.10</version>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${user.dir}/lib</outputDirectory>
                        <overWriteReleases>false</overWriteReleases>
                        <overWriteSnapshots>false</overWriteSnapshots>
                        <overWriteIfNewer>true</overWriteIfNewer>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这是我的MapController.java:

  @Controller

public class MapController {

private static final org.slf4j.Logger logger =
        org.slf4j.LoggerFactory.getLogger(MapController.class);

@Autowired
private MapService mapService;

@Autowired
private FileService fileService;

private Marker marker;
private List<Marker> arrayMarker = new ArrayList<>();

private String arrayMarker2 ="";
//List<Marker> supportArray = new ArrayList<>();
private Integer indiceMarker = 0;

/*@RequestMapping(value="/map",method= RequestMethod.GET)
public String loadMap1(Model model){
    String html = mapService.getResponseHTMLString();
    return "riconciliazione2/mappa/map";
}
@RequestMapping(value="/map",method = RequestMethod.POST)
public String result(@RequestParam(required=false, value="urlParam")String url,Model model){
    System.out.println("url: " + url);
    return "home";
}*/


@RequestMapping(value="/map",method= RequestMethod.GET)
public String loadMap2(Model model){
    //String html = mapService.getResponseHTMLString();
    //Site siteForm = new Site();
    //model.addAttribute("siteForm",siteForm);
    if(!arrayMarker.isEmpty()) model.addAttribute("arrayMarker",arrayMarker);
    else model.addAttribute("arrayMarker",null);

    arrayMarker2 = JsonUtilities.writeListToJsonArray(arrayMarker);
    if(arrayMarker2 != null) model.addAttribute("arrayMarker2",arrayMarker2);
    else model.addAttribute("arrayMarker2","");

    if(marker!=null)model.addAttribute("marker",marker);
    else model.addAttribute("marker",null);

    model.addAttribute("indiceMarker",indiceMarker);
    model.addAttribute("urlParam",null);

    String html = mapService.getResponseHTMLString();
    model.addAttribute("HTML",html);

    return "riconciliazione2/mappa/leafletMap";
}


/*@RequestMapping("*")
public String hello(HttpServletRequest request,Model model) {
    System.out.println(request.getServletPath());
    String MAIN = mapService.homeMain();
    model.addAttribute("MAIN",MAIN);
    return "main";
}*/

@RequestMapping("/")
public String homeMain(Model model){
    return "main";
}

@RequestMapping(value="/main",method= RequestMethod.GET)
public String homeMain2(Model model){
    //String MAIN = mapService.homeMain();
    //model.addAttribute("MAIN",MAIN);
    return "main";
}


//---------------------------------------------------------
// NEW GET METHOD
//---------------------------------------------------------
@RequestMapping(value="/map13",method= RequestMethod.GET)
public String loadMap13(){
    Model model = new ExtendedModelMap();
    //String html = mapService.getResponseHTMLString();
    //Site siteForm = new Site();
    //model.addAttribute("siteForm",siteForm);
    if(!arrayMarker.isEmpty()) model.addAttribute("arrayMarker",arrayMarker);
    else model.addAttribute("arrayMarker",null);

    arrayMarker2 = JsonUtilities.writeListToJsonArray(arrayMarker);
    if(arrayMarker2 != null) model.addAttribute("arrayMarker2",arrayMarker2);
    else model.addAttribute("arrayMarker2",null);

    if(marker!=null)model.addAttribute("marker",marker);
    else model.addAttribute("marker",null);

    model.addAttribute("indiceMarker",indiceMarker);
    model.addAttribute("urlParam",null);

    //String html = mapService.getResponseHTMLString();
    //model.addAttribute("HTML",html);
    //model.addAttribute("supportArray",supportArray);
    return "riconciliazione2/mappa/leafletMap5";
}

//---------------------------------------------------------
// NEW POST METHOD
//---------------------------------------------------------


@RequestMapping(value="/map3",method = RequestMethod.POST)
public String result4(@RequestParam(required=false, value="urlParam")String url,
                      @RequestParam(required=false,value="arrayParam")List<String> arrayParam
                      //@ModelAttribute(value="arrayParam") MarkerList arrayParam
                      //@ModelAttribute(value="markerParam")Marker markerFromJS
){

    if(arrayParam!= null && !arrayParam.isEmpty()){
        for(String smarker : arrayParam){
            if(StringUtilities.isNullOrEmpty(smarker))continue;
            marker = new Marker();
            try {
               marker = JsonUtilities.fromJson(smarker,Marker.class);
            } catch (IOException ioe) {
                ioe.printStackTrace();
            }
            arrayMarker.add(marker);
            indiceMarker++;
        }
    }

    if(!StringUtilities.isNullOrEmpty(url)) {
        String[] splitter;
        if (url.contains(",")) {
            splitter = url.split(",");
            url = splitter[0];
        }

        System.out.println("url: " + url);
        marker = new Marker();
        marker = mapService.createMarkerFromGeoDocument(url);
        // = new Marker("City",url,"43.3555664", "11.0290384");
        //model.addAttribute("marker",marker); //no need is get from the HTTTP GET COMMAND
        arrayMarker.add(marker);
        indiceMarker++;
    }
    return "redirect:/map13";
}

这里 link 我的 JSP 页面:JSPPage

我不知道为什么属性 arrayMarker2 总是空的,这让我抓狂。 你可以在这个 link springMVC12 找到项目的完整代码。 如有任何帮助,请提前联系。

好的,我自己解决了,但我不确定如何解决。 我只是用 ModelAndView 对象替换了 springframework 的所有模型。