【问题标题】:Changing attribute type - data bind Spring MVC Form更改属性类型 - 数据绑定 Spring MVC 表单
【发布时间】:2013-04-04 14:18:53
【问题描述】:

假设我有以下内容:

休眠:

@Entity
@Table(name = "users")
public class Users implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;
    @Column(name = "companyId")
    private Integer companyid;

我的 JSP:

<form:form commandName="user" id="userForm">
<form:input path="name" />
<form:input path="companyId" />

现在我想在文本字段中显示公司名称而不是其 ID。 当我提交表单时,有时我会通过提供公司名称来查询公司 ID,以填充和持久化实体。我希望能够反过来做。

有可能吗?

【问题讨论】:

    标签: java spring jsp data-binding


    【解决方案1】:

    一种选择是在你的jsp中隐藏companyId

    <form:form commandName="user" id="userForm">
    <form:input path="name" />
    <form:hidden path="companyId" />
    <form:input path="companyName" />
    

    这样,您将能够在您的 JSP 中显示 companyName 并在您的控制器中接收两者。

    【讨论】:

    • 但是 companyName 不是用户的属性,也不是 UserDto。所以当我插入 path="companyName" 我得到这个异常:org.springframework.beans.NotReadablePropertyException: bean 类的无效属性 'companyName' [ UserDto]...
    • 那么您需要在User 中包含Company 对象才能显示此字段(path="company.name")。您正在使用 JPA/Hibernate,因此很容易实现这一点(使用 @OneToOne、@ManyToOne)并且将是一个很好的实现。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2011-04-27
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多