Search code examples
mavenjspspring-mvcspring-bootjsp-tags

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


I'm desperate, i'm following all the tutorials and the documentations, and i succesfully create a little hello controller with spring boot, but when i'm try to use spring boot on my project, all the attributes of the spring Model/Modelview are not loaded and i don't know why. Here my 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>

Here my 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";
}

Here the link to my JSP page: JSPPage

I don't know why but the attribute arrayMarker2 is always empty, and that give me nuts. You can find the full code of the project to this link springMVC12. Ty in advance for any help.


Solution

  • Ok, i solved by myself but i not sure how. I just replace all the Model of springframework with the ModelAndView Object.