当前位置: 首页 > 知识库问答 >
问题:

使用Thymeleaf为嵌套对象创建表单的问题

景永春
2023-03-14

类MedicalJournalEntry:

@Entity
@Table(name="MED_JOURNAL_ENTRY")
public class MedicalJournalEntry extends JournalEntry{


/*
 * The following attributes are inherited from the superclass JournalEntry
 * intJournalEntryId
 * datJournalEntryDate
 * tstmpJournalEntryCreateDate
 * tstmpJournalEntryUpdateDate
 * 
 * getters and setters are defined and implemented in the superclass JournalEntry as well
 * 
 */
@Embedded
private BloodPressure bloodPressure;

@ManyToOne
@JoinColumn(name = "JOURNAL_ID")
@JsonBackReference
private MedicalJournal medJournal; // bidirectional relationship with entity MedicalJournal

@Column(name="JOURNAL_ENTRY_PULSE")
private short shPulse; 
@Column(name="JOURNAL_ENTRY_HEIGHT")
@Min(value = 1, message="Die Größe muss größer als 1cm sein.")
@Max(value = 300, message="Die Größe muss kleiner als 300cm sein.")
private short shHeight; // in centimeters
@Column(name="JOURNAL_ENTRY_WEIGHT")
@Min(value = 1, message="Das Gewicht muss größer als 1kg sein.")
@Max(value = 500, message="Das Gewicht muss kleiner als 500kg sein.")
private short shWeight; // in kilograms
@Column(name="JOURNAL_ENTRY_BMI")
private float fltBmi;
@Column(name="JOURNAL_ENTRY_IS_SICK")
private boolean blnIsSick;

// constructors and methods ...
}

类别血压:

@Embeddable // is part of MedicalJournalEntry
public class BloodPressure {

public BloodPressure(int intSYS, int intDIA) {
    this.intSYS = intSYS;
    this.intDIA = intDIA;
}
@Column(name ="BLOOD_PRESSURE_SYS")
private int intSYS;
@Column(name = "BLOOD_PRESSURE_DIA")
private int intDIA;
// constructors and mehtods ...
}

我使用片段创建了一个表单。它对“普通”字段非常有效,但是自从我添加了嵌套对象字段后,Thymeleaf甚至不能再创建保存表单的视图了。当我想要显示窗体时,我总是得到以下错误:

    <form action = "#" th:action="@{/medJourEntry/add}" th:object=${medicalJournalEntry} method ="post">

    <div th:replace="edit-medJournalEntry.html :: medEntryForm(medEntry=${#object})"></div>


    <button type="submit" class="btn btn-primary">Tagebucheintrag erstellen</button>

    <button type="reset" class="btn btn-primary">Felder zurücksetzen</button>

    </form>

以及引发问题的片段对应内容:

        </div>

            <div class ="form-row">

                <div class="form-group col-md-4">

                    <label for="bloodpressureSys">Blutdruck systolisch</label>

                    <input type="text" th:field="*{bloodPressure.intSys}" class="form-control" id="bloodpressureSys" aria-describedby="bloodpressureSystHelp" placeholder="Systolischer Blutdruck">

                    <div th:if="${#fields.hasErrors('${medicalJournalEntry.bloodPressure.intSys}')}">
                        <div class="alert alert-danger" role="alert">
                            <p th:each="err : ${#fields.errors('bloodPressure.intSys')}" th:text="${err}"></p>
                        </div>
                    </div>

                    <small id="bloodpressureSystHelp" class="form-text text-muted">Bitte tragen Sie den systolischen Blutdruck (in mmHg) ein.</small>

                </div>

            <div class="form-group col-md-4">

                    <label for="bloodpressureDia">Blutdruck Diastolisch</label>

                    <input type = "text" th:field="*{bloodPressure.intDia}" class="form-control" id="bloodpressureDia" aria-describedby="bloodpressureDiaHelp" placeholder="Diastolischer Blutdruck">

                    <small id="bloodpressureDiaHelp" class="form-text text-muted">Bitte tragen Sie den diastolischen Blutdruck (in mmHg) ein.</small>

            </div>
        </div>

这是我的控制器。它只返回包含新MedicalJournalEntry的输入数据表单的视图:

@RequestMapping(value="/create", method = RequestMethod.GET)
public String showCreateMedicalJournalEntryForm(MedicalJournalEntry medicalJournalEntry) {

    return "create-medJournalEntry";
}

共有1个答案

山高峰
2023-03-14

谢谢所有想帮助我的人!

我们刚刚解决了我们的问题。

MedicalJournalEntry类的no-arg构造函数缺少emtpy BloodPressure对象的构造。这是强制性的,因为否则基本上您会得到某种NullPointerException,因为子对象只是不活动。

 类似资料:
  • 我知道Jackson允许使用创建平面json 将序列化为 这可能使用Jackson1.9吗?

  • 问题内容: 如何将JSON传递到RAILS应用程序,以便它将以has_many关系创建嵌套的子对象? 这是我到目前为止的内容: 两个模型对象。 使用通勤,我可以设置标准控制器。我希望能够使用JSON在一个REST调用中创建一个Commute对象以及几个子Location对象。我一直在尝试这样的事情: 更具可读性的JSON是: 执行该命令时,将得到以下输出: 看起来好像正在读取JSON数组的loca

  • 问题内容: 我正在尝试从JSON创建嵌套的UL。我能够遍历并从对象中获取数据,但是在构建嵌套UL时遇到了麻烦。我认为’.append’方法放置在错误的位置。生成的LI都分组在一起。我如何创建一个循环(或者也可以用另一种方法)来构建带有正确嵌套的子菜单LI的UL?我曾尝试使用其他类似的帖子来解决我的问题,但是我的数据和代码似乎没有任何意义。对此有些不解之举- 我尝试了几种方法来创建此动态列表,但到目

  • 我从foursquare收到了一个json形式的响应。我尝试访问对象的某些部分,但没有成功。如何访问对象的地址?这是我试过的代码。 以下是json响应的一个示例: 完整的回应可以在这里找到

  • 我正在使用Spring Boot和Thymeleaf为我的应用程序创建一个登录页。为此,我需要呈现所有包含容器的主机对象的列表。以下是相关代码: 现在,我想遍历所有服务器,并在表中显示关于每个容器的信息。我的Thymeleaf模板如下所示: 我的问题是访问容器属性的部分(由注释标记)。每次我都会得到一个SpringEL异常。如果我删除并将其替换为会显示容器的String版本,因此我可以访问对象和它