0

在我看来,我有一个像这样的简单表格,它可以工作:

<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 name 'model' 的 BindingResult 和普通目标对象都不能用作请求属性

如果在我的标签中我写这个:

<form:form modelAttribute="user" >

它之所以有效,是因为我猜它在模型中找到了属性“用户”

但我想使用属性“模型”:

<%@ attribute name="model" required="true" type="com.myObject"%>

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

我怎样才能做到这一点?

谢谢

4

1 回答 1

0
<form:form modelAttribute="model" >

您当前的标签实现具有属性的硬编码名称,无论传入属性的值如何,modelAttribute它始终是模型。

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

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

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

于 2014-01-07T14:51:57.137 回答