html - 如何从数据库中填充下拉列表并在选择页面时更新页面?
问题描述
我正在制作一个网站,它在哪里有点像 Pokédex单击时将使用选择的任何神奇宝贝更新页面。
我目前面临的问题是,尽管数据库中有许多神奇宝贝,但下拉菜单没有出现,这表明它没有选择正确的值,或者它是,但它无法解释结果正确。
带有下拉菜单的 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();
}
}
如果有人对如何完成表格有任何提示,我将非常感谢您的帮助,谢谢
解决方案
你有一个pokemon
模型变量和一个pokemon
变量th:each
。改变其中之一。也pokemonList
没有设置。这不只是一个错字吗?
<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>
推荐阅读
- jquery - Jquery - 仅触发特定类中的模糊事件
- javascript - SyntaxError:setInterval 回调中的意外标识符
- json - URLSession 类型不匹配错误
- .net - 弹性搜索是我需要的吗?
- numpy - Numpy-找到一组特定特征值的对应特征向量
- asp.net-core-mvc - ASP.Net Core:索赔转换和授权策略
- django - Django modelform字段如何禁用和防止篡改?
- javascript - Django - 无法访问根文件夹下的静态 css 文件。控制台中的错误 404
- rest - 测试我是否通过 TLS1.2 进行通信的 Rest 服务
- javascript - 根据上一个下拉菜单中的选定值填充下拉菜单?