在我看来,我有一个像这样的简单形式:
<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>
但它引发了一个例外: BindingResult和bean名称'model'的普通目标对象都不可用作请求属性
如果在我的标签中我写了这个:
<form:form modelAttribute="user" >
它有效,因为我猜它在模型中找到属性“user”
但我想使用属性“model”:
<%@ attribute name="model" required="true" type="com.myObject"%>
因为在模型中它并不总是被称为相同。
我怎样才能实现这一目标?
感谢
答案 0 :(得分:0)
<form:form modelAttribute="model" >
您对标记的当前实现具有modelAttribute
属性的硬编码名称,无论传入属性的值是什么,它都将始终为模型。
要使其动态使用表达式而不是硬编码值。
<form:form modelAttribute="${model}" >
这将使用名为model
的传入属性的值替换表达式。