2017-03-01 2 views
0

Ich habe versucht, eine einfache Anwendung mit Spring mit IntelliJ und Gradle als Build-Tool zu tun. Ich habe ein einfaches Panel mit Eingaben aus der jstl-Bibliothek erstellt, aber es gibt einige Probleme mit dem Server, da der Browser keine Eingaben zeigt. Das ist mein erstes Frühjahrsprojekt. Ich habe noch nie mit IntelliJ und Gradle gearbeitet, also besteht die Möglichkeit, dass ich einen dummen Fehler gemacht habe, den ich nicht ausarbeiten kann.Java Spring IntelliJ jstl Tags funktioniert nicht

createUser.jsp (src/main/webapp/WEB-INF/views):

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 

<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    <title>Dodaj usera</title> 
</head> 
<body> 

<form:form method="POST" modelAttribute="userDTO"> 
    <h1>Podaj imie: </h1> 
    <form:input type="text" path="name" /> <br /> 
    <h1>Podaj nazwisko: </h1> 
    <form:input type="text" path="secondName" /> <br /> 
    <h1>Podaj nr telefonu: </h1> 
    <form:input type="text" path="phoneNumber" /> <br /> 
    <h1>Podaj e-mail: </h1> 
    <form:input type="text" path="eMail" /> <br /> 
</form:form> 

</body> 
</html> 

controller.java:

@Controller 
public class Controler { 

@RequestMapping("/hello") 
String hello(){ 
    return "hello"; 
} 

@RequestMapping(value = "/userForm", method = RequestMethod.GET) 
String userFormGet(){ 
    return "createUser"; 
} 

@RequestMapping(value = "/userForm", method = RequestMethod.POST) 
String userFormPost(@ModelAttribute("form") @Valid UserDTO userDTO, BindingResult result){ 
    if(result.hasErrors()){ 
     return "createUser"; 
    } 
    else 
     return "redirect:/hello"; 
} 
} 

configuration.java Klasse:

@Configuration 
@EnableWebMvc 
@ComponentScan(basePackages="com.petkow") 
public class MvcConfiguration extends WebMvcConfigurerAdapter { 
@Bean 
public ViewResolver getViewResolver() { 
    InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/views/"); 
    resolver.setSuffix(".jsp"); 
    return resolver; 
} 

@Bean 
public MessageSource messageSource() { 
    ResourceBundleMessageSource messageSource = new ResourceBundleMessageSource(); 
    messageSource.setBasename("messages"); 
    return messageSource; 
} 

@Override 
public void configureDefaultServletHandling(
     DefaultServletHandlerConfigurer configurer) { 
    configurer.enable(); 
} 
} 

build.gradle:

buildscript { 
ext { 
    springBootVersion = '1.5.1.RELEASE' 
} 
repositories { 
    mavenCentral() 
} 
dependencies { 
    classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") 

} 
} 

apply plugin: 'java' 
apply plugin: 'eclipse' 
apply plugin: 'org.springframework.boot' 

jar { 
baseName = 'transport-service' 
version = '0.0.1-SNAPSHOT' 
} 

sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 


dependencies { 
compile('org.springframework.boot:spring-boot-starter-web') 
testCompile('org.springframework.boot:spring-boot-starter-test') 
compile group: 'javax.servlet', name: 'jstl', version: '1.2' 
compile 'javax.validation:validation-api:1.1.0.Final' 
compile 'org.hibernate:hibernate-validator:5.0.1.Final' 
} 

Starter Klasse:

@SpringBootApplication 
public class TransportServiceApplication { 

public static void main(String[] args) { 
    SpringApplication.run(TransportServiceApplication.class, args); 
} 
} 

Datenübertragung Objektklasse:

public class UserDTO { 

@NotBlank 
@Length(min=2, max=50) 
private String name; 
@NotBlank 
@Length(min=2, max=50) 
private String secondName; 
@Min(9) 
@Max(9) 
private long phoneNumber; 
@NotBlank 
@Email 
private String eMail; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getSecondName() { 
    return secondName; 
} 

public void setSecondName(String secondName) { 
    this.secondName = secondName; 
} 

public long getPhoneNumber() { 
    return phoneNumber; 
} 

public void setPhoneNumber(long phoneNumber) { 
    this.phoneNumber = phoneNumber; 
} 

public String geteMail() { 
    return eMail; 
} 

public void seteMail(String eMail) { 
    this.eMail = eMail; 
} 
} 

result from browser request:

+0

Bitte teilen Sie das [minimale, vollständige und überprüfbare Beispiel] (http://stackoverflow.com/help/mcve). – CrazyCoder

Antwort

0

Ihr Controller-Code ist etwas falsch. In der Methode get registrieren Sie den Modellnamen nicht. Frühlingsformmarke bricht. Dies könnte der Grund für Ihr Problem sein. Ändern Sie Controller-Methode wie folgt.

@RequestMapping(value = "/userForm", method = RequestMethod.GET) 
ModelAndView userFormGet(){ 
    return new ModelAndView("page","userDTO",new UserDTO()); 
} 
+0

Danke für Ihre Antwort. Ich habe es geändert, aber immer noch das Gleiche. Hast du irgendwelche anderen Ideen, was kann falsch sein? Es sieht so aus, als ob diese drei oberen Zeilen in der .jsp-Datei nicht korrekt behandelt werden, weil ich sie als Text in meinem Browser zurückbekomme. – likebutter

+0

Ich sehe kein anderes Problem. Ich habe das Textfeld in Ihrem Bildschirm auch nicht gesehen. Ich ging davon aus, dass Frühlingsform-Tags brechen. Probieren Sie dies in einem anderen Browser aus. –

+0

Alles ist in Ordnung, wenn ich diese Tags nicht verwende, ich meine, wenn ich reines HTML bekomme. Ich glaube nicht, dass es ein Problem mit dem Browser gibt. Ich habe versucht, diese Seite auf drei Browsern zu erhalten, jeder gibt dasselbe zurück. – likebutter

Verwandte Themen