【问题标题】:Receivng error "Invalid property 'xxx' of bean class" when trying to submit form via JSTL form tags尝试通过 JSTL 表单标签提交表单时收到错误“bean 类的无效属性 'xxx'”
【发布时间】:2019-06-15 04:04:10
【问题描述】:

我正在尝试构建一个简单的 Spring 项目,用户可以通过表单搜索数据库。如果我使用常规表单输入,它会完美运行,但如果我尝试使用 JSTL 表单标签,它会中断。任何帮助将不胜感激

JSP:

<form:form action="/search" method="post" modelAttribute="music">
        <form:label path="artist">Artist</form:label>
        <form:errors path="artist"/>
        <form:input path="artist"/>
    <input type="submit" value="Submit"/>

控制器:

    @RequestMapping(value="/search", method=RequestMethod.POST)
        public String search(@RequestParam(value="artist") String search, Model model) {
        List<Music> results = musicService.findArtist(search);
        model.addAttribute("search", search);
        model.addAttribute("results", results);
        return "music/search.jsp";
    }

服务:

    public List<Music> findArtist(String search){
        return musicRepository.findByArtistContaining(search);
    }

回购:

List<Music> findByArtistContaining(String search);

真的不确定我做错了什么,但我确定我以某种方式弄乱了 JSP 代码。我只想通过 repo 方法 findByArtistContaining 从数据库中提取结果

我在尝试访问时收到的错误是:

Invalid property 'artist' of bean class [java.util.ArrayList]: Bean property 'artist' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

【问题讨论】:

  • 您是否创建了任何名为音乐的模型类?如果是,您是否在其中定义了artist 属性并为此生成了getter setter 方法?并验证是否有任何拼写错误。
  • 是的!将艺术家声明为 getArtist()、setArtist() 和 getter 和 setter。当我有一个名称相同的常规 HTML 输入时,搜索工作完美。不过,感谢您的观看!

标签: java spring jsp jstl


【解决方案1】:

很抱歉迟到了,但我认为这不起作用,因为请求参数与您尝试将其映射到的字符串的名称不匹配,如此处所述;

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html

所以改成下面应该可以;

@RequestParam(name="artist") String artist,

【讨论】:

  • 非常感谢,我忘了更新,但一切都弄清楚了,这正是发生的事情。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 2014-05-09
  • 2014-07-13
  • 2023-03-18
相关资源
最近更新 更多