jsp 2.0标签内的spring模型属性

时间:2014-01-07 14:24:31

标签: spring spring-mvc jsp-tags spring-form

在我看来,我有一个像这样的简单形式:

<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"%>

因为在模型中它并不总是被称为相同。

我怎样才能实现这一目标?

感谢

1 个答案:

答案 0 :(得分:0)

<form:form modelAttribute="model" >

您对标记的当前实现具有modelAttribute属性的硬编码名称,无论传入属性的值是什么,它都将始终为模型

要使其动态使用表达式而不是硬编码值。

<form:form modelAttribute="${model}" >

这将使用名为model的传入属性的值替换表达式。