【问题标题】:Display dropdown items using ThymeLeaf by reading values from the database.通过从数据库中读取值,使用 ThymeLeaf 显示下拉项目。
【发布时间】:2018-11-25 11:36:18
【问题描述】:

我正在开发一个 Spring Boot 应用程序,并试图用数据库的内容填充 HTML 中的选项。为此,我在 ThymeLeaf 中使用迭代器来显示所有这些选项。 sn-p 是:

<div class="col-1.5">
                        <select class="form-control form-control-sm" id="agentName">

                            <option value="">Select an agent</option>
                            <option th:each="log:${logs}"
                                    th:value="${log.agentName}"
                                    th:text="${log.agentName}"
                            >
                            </option>
                        </select>
                    </div>

我的 DAO 课程中有这个

@Transactional
@Repository
public interface AgentsDao extends CrudRepository<Agents,String>{       
    public List<Agents> findAll();
    public Agents findByagentId();    
}

我的控制器里有这个

@RequestMapping(value="/log")
    public String log(Model model) {
        List<Agents> logs = agentsCRUD.findAll();
        model.addAttribute("logs", logs);
        return "log";
    }

基本上,我的代理模型(表)中有“agentId”作为主键。并且有成千上万的代理,它们的名称由列表示:“agentName” 所有“agentName”都是我试图使用 ThymeLeaf 在 HTML 选项中显示的内容。现在代码有错误。我对 Spring Framework 很陌生(只使用了一周),所以我很难弄清楚如何去做。

【问题讨论】:

  • 您遇到了哪些异常/错误,请您展示一下您的整个控制器吗?
  • 1.原因:java.lang.IllegalArgumentException:没有参数可用于部分 agentId SIMPLE_PROPERTY (1):[Is, Equals]。 2. 原因:java.lang.IllegalArgumentException: Failed to create query method public abstract com.bulk.model.Agents com.bulk.dao.impl.AgentsDao.findByagentId()!部分 agentId SIMPLE_PROPERTY (1) 没有可用参数:[Is, Equals]。 3. 原因:org.springframework.beans.factory.BeanCreationException: Error created bean with name 'agentsDao': Failed to create query method public abstract com.bulk.model.Agents com.bulk.dao.impl.AgentsDao.findByagentId( )!

标签: spring hibernate spring-mvc spring-boot thymeleaf


【解决方案1】:

在您的 public Agents findByagentId(); 方法中,您需要为代理 ID 添加参数。例如:public Agents findByagentId(Long id); Spring 正在期待一个参数,所以我知道启动和/或 Bean 创建失败。

【讨论】:

    【解决方案2】:

    对于下拉列表的返回列表,最安全的方法是使用

    模型属性

       @ModelAttribute("logs")
        public List<Agents> log() {
            List<Agents> logs = agentsCRUD.findAll();
            return logs;
        }
    

    试试这个。

    【讨论】:

      【解决方案3】:

      确保您的“代理”类中有“代理名称”。 此外,您是否在从数据库中获取代理列表时尝试获取整个实体。 我的意思是,如果您只想获取“agentName”,请在查询中使用“ResultTransformer”来获取“agentName”(如果您使用的是 Hibernate Framework)。

      【讨论】:

      • 您能否展示一个有关如何使用 ResultTransformer 的快速示例?非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-11
      • 1970-01-01
      • 2014-04-28
      • 2011-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多