Я создаю веб-сайт, который будет чем-то вроде фиктивного Покедекса, и я пытаюсь получить его, чтобы была одна страница для Покемона, которая будет обновляться на основе выпадающего списка возможных Покемон, при нажатии на который будет обновляться страница с выбранным Покемоном.
Текущая проблема, с которой я сталкиваюсь, заключается в том, что, несмотря на наличие в базе данных нескольких покемонов, раскрывающийся список не появляется, что говорит о том, что он не подбирает правильные значения или что это так, но может правильно интерпретировать результаты.
HTML-код с раскрывающимся списком:
<section class="dropdown">
<form action="/pokemon" method="post" th:object="${pokemon}">
<select th:each="pokemon : ${pokemonList}">
<option th:value="${pokemon.dexNum}" th:text="${pokemon.name}"></option>
</select>
</form>
</section>
Какой должен запрашивать этот метод при выборе, я не могу подтвердить, как это работает без раскрывающегося списка, поэтому он может быть ошибочным.
private EntityManager em = new EntityManager();
@PostMapping(value = "/pokemon")
public Pokemon changeCurrentPokemon(int num) {
pokemonService.setCurrentPokemon(em.find(Pokemon.class, num));
return pokemonService.getCurrentPokemon();
}
С переменными, доступными через:
@GetMapping(value = "/pokemon")
public ModelAndView showPokemon() {
return new ModelAndView("pokemon", "pokemon",
pokemonService.getCurrentPokemon() != null
? pokemonService.getCurrentPokemon()
: new Pokemon(1, "Bulbasaur", "Seed Pokemon", "/images/pokemon/1-Bulbasaur.png", "Grass", "Poison")
);
}
Класс pokemonService является реализацией pokemonService, показанной здесь:
package pokedex.services;
import org.springframework.stereotype.Service;
import pokedex.dao.PokemonRepository;
import pokedex.entities.Pokemon;
import java.util.List;
@Service
public class PokemonServiceImpl implements PokemonService {
private PokemonRepository pokemonRepository;
private Pokemon currentPokemon;
public PokemonServiceImpl(PokemonRepository pokemonRepository) {
this.pokemonRepository = pokemonRepository;
}
@Override
public List<Pokemon> getPokemonList() {
return pokemonRepository.findAll();
}
@Override
public void addPokemon(Pokemon pokemon) {
currentPokemon = pokemon;
pokemonRepository.save(pokemon);
}
@Override
public void setCurrentPokemon(Pokemon pokemon) {
currentPokemon = pokemon;
}
@Override
public Pokemon getCurrentPokemon() {
return currentPokemon;
}
@Override
public int getNumberOfPokemon() {
return (int) pokemonRepository.count();
}
}
Если у кого-нибудь есть какие-либо советы о том, как сделать формы, я был бы очень признателен за помощь, спасибо