Spring 5中<form:textarea>标签无法赋值问题求助
解决Spring 5中
<form:textarea>赋值失败的问题 嘿,我来帮你捋捋这个问题!你遇到的情况其实是Spring表单标签的特性导致的——Spring的<form:textarea>并不通过value属性来填充内容,它是基于数据绑定机制工作的,所以你手动写的value="${termMaster.description}"根本不会生效。
为什么你的代码没效果?
Spring的form系列标签(比如<form:textarea>、<form:input>这类)是和后端Model里的对象绑定的,它会自动从你指定的modelAttribute(或旧版的commandName)对象中,通过path属性对应的getter方法读取值,手动设置的value属性会被直接忽略。
正确的解决步骤
按照下面的方式调整代码就可以解决问题:
后端Controller确保把
termMaster放入Model
在处理页面请求的Controller方法里,要把你的termMaster对象添加到Model中,这样前端才能拿到对应的数据:@GetMapping("/your-form-page") public String loadForm(Model model) { // 这里模拟从数据库或业务逻辑层获取termMaster对象 TermMaster termMaster = termMasterService.getTermById(1L); // 将对象放入Model,名称要和前端form标签的modelAttribute一致 model.addAttribute("termMaster", termMaster); return "your-view-name"; }前端正确配置form标签和textarea
确保你的表单标签指定了modelAttribute(对应后端放入Model的对象名称),然后<form:textarea>只需要保留path属性即可,完全不需要写value:<form:form modelAttribute="termMaster" action="/submit-form" method="post"> <form:textarea path="description" rows="3" cols="2" class="span11" placeholder="Description:"/> <!-- 其他表单元素 --> <button type="submit">提交</button> </form:form>
额外排查点
如果调整后还是没生效,可以检查这几个地方:
- 确认
TermMaster类有public String getDescription()方法(Spring必须通过getter来读取属性值) - 在Controller里打印
termMaster.getDescription(),确认这个值不是null或空字符串 - 在页面上直接用
${termMaster.description}输出,看看能不能显示内容,验证EL表达式是否正常工作
这样调整后,<form:textarea>应该就能自动填充termMaster.description的值啦!
内容的提问来源于stack exchange,提问作者Mohammad Umer Shaikh
相关产品推荐
相关产品推荐

