【问题标题】:spring model attribute inside jsp 2.0 tagjsp 2.0标签内的spring模型属性
【发布时间】: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 的&lt;form:form&gt; 元素不接受modelAttributecommandName 属性的请求属性名称吗?
  • 谢谢 M. Deinum 我知道我离我不远了!您能否将您的评论添加为回复,以便我接受!
  • @SotiriosDelimanolis 确实如此,但如果您想动态填充它,则必须使用表达式而不是硬编码值。
  • @M.Deinum 哦,我误解了这个问题。 model 用于保存要使用的属性的名称。

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


【解决方案1】:
<form:form modelAttribute="model" >

您当前的标签实现有一个硬编码的modelAttribute 属性名称,无论传入属性的值是什么,它始终是model

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

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

这会将表达式替换为名为@9​​87654324@ 的传入属性的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2022-01-25
    相关资源
    最近更新 更多