Aplikacja www w Javie

0

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ę :)

3

Anuglar albo jaki innych framework tego typu + Spring RestController.

0

Do małych aplikacji można jeszcze użyć o wiele lżejszego Backbone.js (+ Backbone.Marionette.js)

0

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

1

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.

0

Dzięki za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1