Cześć,
zacząłem pisać aplikację www w Spring Framework, ale nie chcę by po
każdej interakcji użytkownika (np. kliknięcie przycisku) strona została
przeładowana. Co powinienem zrobić, żeby tego uniknąć?
Z góry dziękuję za radę :)
Cześć,
zacząłem pisać aplikację www w Spring Framework, ale nie chcę by po
każdej interakcji użytkownika (np. kliknięcie przycisku) strona została
przeładowana. Co powinienem zrobić, żeby tego uniknąć?
Z góry dziękuję za radę :)
Anuglar albo jaki innych framework tego typu + Spring RestController.
Do małych aplikacji można jeszcze użyć o wiele lżejszego Backbone.js (+ Backbone.Marionette.js)
A co zrobić. by użyć angularjs w springu?
Fragment kodu, który dołączam losuje jeden element
z listy(string), a następnie porównuje go z wyborem
użytkownika. Chciałbym, by po kliknięciu przycisku
strona się nie odświeżała.
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class EarController {
@RequestMapping(value = "/randomTriad", method = RequestMethod.GET)
public ModelAndView test() {
ModelAndView model = new ModelAndView("test");
List<String> triads = getAllTriads();
Random rg = new Random();
String randomTriad = triads.get(rg.nextInt(triads.size()));
showAnswer(model, randomTriad);
return model;
}
@RequestMapping(value = "/test", method = RequestMethod.POST)
public ModelAndView handlePost(@RequestParam String userAction, String randomTriad) {
ModelAndView model = null;
if (userAction.equals(randomTriad)) {
System.out.println("Poprawnie");
model = new ModelAndView("redirect:/randomTriad");
} else {
System.out.println("Ruch niepoprawny");
model = new ModelAndView("test");
showAnswer(model, randomTriad);
}
return model;
}
public static void showAnswer(ModelAndView model, String randomTriad) {
List<String> triads = getAllTriads();
model.addObject("randomTriad", randomTriad);
model.addObject("triads", triads);
}
public static List<String> getAllTriads() {
List<String> triads = new ArrayList<>();
triads.add("major");
triads.add("minor");
triads.add("diminished");
triads.add("augmented");
return triads;
}
}
<%@page language="Java" contentType="text/html; UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>TEST</h1>
<h1>${msg}</h1>
<form:form method="POST" action="/EarWorkout/test">
<input type="text" name="randomTriad" value="${randomTriad}" />
<c:forEach items="${triads}" var="triad">
<input type="submit" name="userAction" value="${triad}" />
</c:forEach>
</form:form>
</body>
</html>
```java
Musisz od nowa napisać całe UI aplikacji. A po stronie Springa zamienić @Controller
na @RestController
i zwracać obiekty serializowane do JSONa z kontrolera zamiast widoków. Tutaj: https://github.com/Pharisaeus/SpringScaffoldApplication masz przykład prostej aplikacji Springowej z odpowiednią konfiguracją i masz tam przykład restowego kontrolera z którego angularem możesz ciągnąć dane.
Dzięki za pomoc.