【发布时间】:2014-01-07 14:24:31
【问题描述】:
在我看来,我有一个像这样的简单表格,它可以工作:
<form:form modelAttribute="user" >
<form:input path="lastName"/> <br/>
</form:form>
我正在尝试制作一个标签来生成这样的表单:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ attribute name="model" required="true" type="com.myObject"%>
<form:form modelAttribute="model" >
<form:input path="lastName"/> <br/>
</form:form>
这样称呼:
<%@ taglib prefix="ahead" tagdir="/WEB-INF/tags" %>
<ahead:form model="${user}"></ahead:form>
但它会抛出异常: Bean 名称“模型”的 BindingResult 和普通目标对象都不能用作请求属性
如果在我的标签中我写了这个:
<form:form modelAttribute="user" >
它可以工作,因为我猜它在模型中找到了属性“用户”
但我想使用属性“模型”:
<%@ attribute name="model" required="true" type="com.myObject"%>
因为它在模型中并不总是被称为相同的。
我怎样才能做到这一点?
谢谢
【问题讨论】:
-
目前你的表单总是寻找一个名为'model'的属性,你应该使用'${model}'将它替换为传入的值。目前它被硬编码为 model。
-
@M.Deinum Spring 的
<form:form>元素不接受modelAttribute和commandName属性的请求属性名称吗? -
谢谢 M. Deinum 我知道我离我不远了!您能否将您的评论添加为回复,以便我接受!
-
@SotiriosDelimanolis 确实如此,但如果您想动态填充它,则必须使用表达式而不是硬编码值。
-
@M.Deinum 哦,我误解了这个问题。
model用于保存要使用的属性的名称。
标签: spring spring-mvc jsp-tags spring-form