【问题标题】:how to pass jstl values in spring mvc in commandObject/modelAttribute of form如何在表单的commandObject / modelAttribute中传递spring mvc中的jstl值
【发布时间】:2015-10-21 13:08:22
【问题描述】:

在我的表单中,我展示了对象的所有属性供用户编辑和更新。例如,我将汽车对象传递给 jsp,然后使用

    <td><form:input type="text" id="carType" path="carType"
                                            maxlength="15" size="20" /></td>

现在用户可以编辑它,一旦点击更新按钮,我就会提交表单

    <form:form method="POST" id="formObj" action="updateCar"
                        modelAttribute="carObject">

现在,我不希望用户能够编辑某些属性,例如 id、品牌和型号。所以我使用 jstl 将这些值显示为标签,而不是在文本框中。所以我用了

    ${carObject.carId}

该值在页面上呈现并且可见。现在的问题是提交表单时,文本框中的值存在于表单对象中,但 jstl 中的值丢失了,并且不是控制器中表单对象的一部分。

我不想将文本框用于具有禁用功能的不可编辑值。我想使用jstl。请帮忙。

【问题讨论】:

  • 您应该将对象存储在会话中。这比使用隐藏输入更安全。见@SessionAttributes

标签: spring forms jsp spring-mvc servlets


【解决方案1】:

您可以使用您不想更新的值来隐藏输入,例如:

<input type="hidden" id="id" value="${carObject.carId}" />

之后,属性 id 将成为控制器层中对象的一部分。

【讨论】:

  • 这适用于 id 但我想在页面上显示的其他值呢。
  • 如果值不变,你需要它们吗?您可以将其放入只读输入类型文本中,并将在控制器层上填充,请注意 HTML 标准不会提交处于禁用状态的输入(请参阅stackoverflow.com/a/524238/1228193)。或者你也可以把它放在一个隐藏的值中。
猜你喜欢
  • 2019-01-14
  • 2011-07-17
  • 1970-01-01
  • 2017-07-11
  • 2011-12-17
  • 2015-05-07
  • 2019-11-26
  • 1970-01-01
  • 2018-06-30
相关资源
最近更新 更多