Как вложить один контроллер в другой?
У меня есть 2 контроллера: UserController и GameController. Мне нужно в GameController использовать UserController. Внедряю я его с помощью анотации @Autowired. Но почему-то у меня не работает эта анотация, и я получаю значение null. Важно! Мне нужно внедрить UserController именно используя анотацию @Autowired. Подскажите пожалуйста, в чем проблема? Возможно я что-то забыл подключить, или что-то подключил неправильно... Буду благодарен каждому за любую помощь!
UserController:
package sk.tuke.gamestudio.server.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.context.WebApplicationContext;
import sk.tuke.gamestudio.entity.Player;
import sk.tuke.gamestudio.service.PlayerService;
@Controller
@Scope(WebApplicationContext.SCOPE_SESSION)
public class UserController {
@Autowired
private PlayerService playerService;
@RequestMapping(value = "/login", method = RequestMethod.GET)
public String loginPage(Model model) {
Player player = new Player();
model.addAttribute("player", player);
return "login";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public String loginProcess(@ModelAttribute("player") Player player) {
Player dbPlayer = playerService.getPlayerByNickname(player.getNickname());
if(dbPlayer != null) {
if(player.getPassword().equals(dbPlayer.getPassword())) {
loggedPlayer = new Player(player.getId(), player.getNickname(), player.getPassword(), player.getLevel());
return "redirect:/lightsoff";
}
}
return "redirect:/login";
}
}
GameController:
package sk.tuke.gamestudio.server.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.context.WebApplicationContext;
import sk.tuke.gamestudio.entity.Player;
import sk.tuke.gamestudio.game.lightsoff.consoleUI.ConsoleUI;
import sk.tuke.gamestudio.game.lightsoff.core.Logic;
import sk.tuke.gamestudio.game.lightsoff.core.StateTile;
@Controller
@RequestMapping("/lightsoff")
@Scope(WebApplicationContext.SCOPE_SESSION)
public class GameController {
@Autowired
private UserController userController;
private Player player = userController.getLoggedPlayer();
private ConsoleUI consoleUI = new ConsoleUI();
private Logic logic = new Logic(consoleUI);
private int[][] field;
@RequestMapping
public String startGame(@RequestParam(required = false) String row, @RequestParam(required = false) String column, Model model) {
model.addAttribute("player", player);
if(row != null && column != null) {
logic.switchStars(field, Integer.parseInt(row), Integer.parseInt(column), consoleUI.getColumns());
}
return "game";
}
public String getHtmlField() {
StringBuilder sb = new StringBuilder();
sb.append("<table>\n");
for(int i = 0; i < consoleUI.getRows(); i++) {
sb.append("<tr>\n");
for(int j = 0; j < consoleUI.getColumns(); j++) {
sb.append("<td>");
sb.append(String.format("<a href='/lightsoff?row=%d&column=%d'>", i, j));
if(field[i][j] == StateTile.ON.getValue()) {
sb.append("<img src='/img/lamp_on.png'>\n");
} else {
sb.append("<img src='/img/lamp_off.png'>\n");
}
sb.append("</a>");
sb.append("</td>");
}
sb.append("</tr>\n");
}
sb.append("</table>\n");
return sb.toString();
}
}