Java SpringMVC表单静态文本

Java SpringMVC表单静态文本,java,forms,spring,Java,Forms,Spring,我正试图用SpringMVC制作表单来编辑一些对象。此对象的某些字段是在创建时设置的,然后无法编辑,因此它们必须像纯文本一样显示在编辑表单上,而不是像输入一样显示。 当我在spring表单标记库中没有找到类似spring:output的smth时,我感到非常惊讶。你怎么能做到?请帮忙:) 以下是我表格的代码: <?xml version="1.0" encoding="UTF-8" ?> <%@page contentType="text/html" pageE

我正试图用SpringMVC制作表单来编辑一些对象。此对象的某些字段是在创建时设置的,然后无法编辑,因此它们必须像纯文本一样显示在编辑表单上,而不是像输入一样显示。 当我在spring表单标记库中没有找到类似spring:output的smth时,我感到非常惊讶。你怎么能做到?请帮忙:) 以下是我表格的代码:

    <?xml version="1.0" encoding="UTF-8" ?>
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
    <%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>
    <%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>

    <h1><spring:message code="Information" /></h1>

    <form:form commandName="shop" method="POST">
        <table>
            <tr>
                <td><spring:message code="ShopCompanyName"/>
                <td colspan="2">**HERE MUST BE A STATIC TEXT 
FILLED WITH THE VALUE OF SOME FIELD FROM OBJECT**</td>
            </tr>
            <tr>
                <td colspan="3"><h2><spring:message code="Contacts"/></h2></td>
            </tr>
            <tr>
                <td><spring:message code="ShopUserLN"/></td>
                <td><form:input path="user.lastName"/></td>
                <td><form:errors path="user.lastName" cssClass="error"/></td>
            </tr>
            <tr>
                <td><spring:message code="ShopUserFN"/></td>
                <td><form:input path="user.firstName"/></td>
                <td><form:errors path="user.firstName" cssClass="error"/></td>
            </tr>
            <tr>
                <td><spring:message code="ShopUserMN"/></td>
                <td><form:input path="user.middleName"/></td>
            </tr>
            <tr>
                <td><spring:message code="ShopUserPhone"/></td>
                <td><form:input path="user.phone"/></td>
                <td><form:errors path="user.phone" cssClass="error"/></td>
            </tr>
        </table>
        <input type="submit" value="Save">
    </form:form>

**这里必须是一个静态文本
填充对象中某个字段的值**

如果不需要XML转义。

如果希望在Spring中在一行中创建多个字段,则可以使用以下代码:

<tr>
    <td><form:label path="first_name">First Name:</form:label></td>
    <td><form:input path="first_name" /></td>

    <td><form:label path="last_name">Last Name:</form:label></td>
    <td><form:input path="last_name" /></td>
</tr>

名字:
姓氏:

这是在单行中创建表单字段的最简单方法…

如果已将输出分离到标记文件,则可以使用spring数据绑定和状态对象,以避免表单名称或对象“shop”的移交:


在/path/to/tag/formFieldFixed.tag文件中

<%@ attribute name="path" required="true" type="java.lang.String" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<spring:bind path="${path}">
    <span>${status.value}</span>
</spring:bind>

${status.value}
有了这样的绑定,您还可以将表单错误与表单容器分离,等等。请参见此处的示例:

谢谢!但它会在表单提交时将此字段值提交给控制器吗?不会。正如您所问,这是静态文本。如果您想提交它(但为什么不在服务器端重新生成它),那么您需要一个隐藏的表单字段。要在服务器端重新生成它,我必须再次按id从数据库中获取此对象,用提交对象的值更新检索对象中的所有可编辑文件,然后保存更新的对象。我认为这不太好。保存整个对象时,使用一个静态字段显示数据,使用一个隐藏字段将其分到服务器,这样它就不会是空的,这是一种好方法吗?你是对的。但是如果表单的逻辑将被修改,例如,如果一些新字段将被添加到对象中。我不仅要修改表单和对象本身,还要修改表单处理逻辑,也就是用提交的值更新旧对象的过程。这是Spring MVC的正常做法吗?您添加了一个方法,该方法通过ID获取要编辑的
SomeObject
,并使用
ModelAttribute
对其进行注释。这使得Spring自动调用该方法,并将要编辑的
SomeObject
实例添加到模型中。然后将类型为
SomeObject
的参数添加到
processSubmit()
方法中,该方法还带有
modeldattribute
注释。Spring将看到对象已经在模型中,并将使用请求参数自动填充它。我给你的链接中已经解释过了。问题是“如何放置纯文本,而不是输入。”
<tr>
    <td><form:label path="first_name">First Name:</form:label></td>
    <td><form:input path="first_name" /></td>

    <td><form:label path="last_name">Last Name:</form:label></td>
    <td><form:input path="last_name" /></td>
</tr>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="my" tagdir="/path/to/tag"%>

<form:form commandName="shop" method="POST">
    <my:formFieldFixed path="name"/>
</form>
<%@ attribute name="path" required="true" type="java.lang.String" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<spring:bind path="${path}">
    <span>${status.value}</span>
</spring:bind>