簡體   English   中英

Thymeleaf:如何從列表或數據庫中檢索元素而不進行迭代?

[英]Thymeleaf: How to retrieve elements from list or database without iterating?

我正在嘗試使用SpEl "th:if="${certs.flag == 'TRUE'}" ”來檢查數據庫中的字段是真還是假。 如果將其設置為“ true”,則不應顯示該表單。 我到處搜索,但似乎找不到任何具有我確切需要的示例的文章。 每個人似乎都在使用迭代。 但是迭代不適用於我在做什么。

  @RequestMapping(value = "/cert_prog", method = RequestMethod.GET)
    public String examsList(Model model, CertificateProgramme certificateProgramme){
        Iterable<Exams> exams = examService.findAll();
        Iterable<School> schools = schoolService.findAll();
        Iterable<CertificateProgramme> certificateProgrammes = certificateService.findAll();
        Iterable<Picture> pictures = pictureService.findAll();
        CertificateProgramme mycert = certificateService.flagger(certificateProgramme);
        model.addAttribute("mycert", mycert);
        model.addAttribute("exams", exams);
    if(!model.containsAttribute("newExam")){
        model.addAttribute("newExam", new Exams());
    }

    model.addAttribute("certificateProgrammes", certificateProgrammes);
    if(!model.containsAttribute("certificate")){
        model.addAttribute("certificate",new CertificateProgramme());
    }
    model.addAttribute("grades", Grade.values());
    model.addAttribute("regions", Region.values());
    model.addAttribute("schools",schools);
    if(!model.containsAttribute("newSchool")){
        model.addAttribute("newSchool",new School());
    }

    model.addAttribute("picture", new Picture());
    return "cert_prog";
}

<form th:if="${certs.flag == 'TRUE'}" method="post" th:object="${certificate}" th:action="@{/basic}" class="form-inline inline new-item">
    <div th:replace="common/layout :: flash"></div>
    <fieldset>
        <legend> Personal Information</legend>
        <div class="row" th:classappend="${#fields.hasErrors('fullName')}? 'error' : ''" >
            <input type="text" class="form-control input-sm" th:field="*{fullName}" placeholder="Full Name example Jane Doe"/>
            <div class="error-message" th:if="${#fields.hasErrors('fullName')}" th:errors="*{fullName}"></div>
        </div>

        <div class="row" th:classappend="${#fields.hasErrors('date')}? 'error' : ''" >
            <input type="date" class="form-control input-sm datepicker" th:field="*{date}"
                   placeholder="Date Of Birth"/>
            <div class="error-message" th:if="${#fields.hasErrors('gender')}" th:errors="*{date}"></div>
        </div>

        <div class="row" th:classappend="${#fields.hasErrors('Nationality')}? 'error' : ''" >
            <input type="text" class="form-control input-sm autocomplete" th:field="*{Nationality}"
                   placeholder="Nationality"/>
            <div class="error-message" th:if="${#fields.hasErrors('Nationality')}" th:errors="*{Nationality}"></div>
        </div>
        <div class="row" th:classappend="${#fields.hasErrors('email')}? 'error' : ''" >
            <input type="text" class="form-control input-sm" th:field="*{email}"
                   placeholder="Email example jane.doe@example.com"/>
            <div class="error-message" th:if="${#fields.hasErrors('email')}" th:errors="*{email}"></div>
        </div>
        <div class="row" th:classappend="${#fields.hasErrors('married')}? 'error' : ''" >
            <select th:field="*{married}" class="form-control input-lg">
                <option value="">[Select Martial Status]</option>
                <option value="Single">Single</option>
                <option value="Married">Married</option>
            </select>
            <div class="error-message" th:if="${#fields.hasErrors('married')}" th:errors="*{married}"></div>
        </div>
        <div class="row">
            <input type="text" class="form-control input-sm" th:field="*{guardianTelephoneNumber}"
                   placeholder="Guardian Telephone Number"/>
        </div>
        <div th:classappend="${#fields.hasErrors('courseOffered')}? 'error' : ''">
            <input type="text" th:field="*{courseOffered}" placeholder="CourseOffered"/>
            <div class="error-message" th:if="${#fields.hasErrors('courseOffered')}" th:errors="*{courseOffered}"></div>
        </div>
        <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" class="btn btn-primary">Add</button>
        </div>
    </fieldset>
</form>

您的問題對我來說真的沒有任何意義。 如果要檢查數據庫中的單個字段,則不能傳遞項目列表。 例如,在您的html中:

<div th:each="certs : ${certificateProgrammes}">
  <form th:if="${certs.flag == 'TRUE'}">
    .
    .
    .
  </form>
</div>

它遍歷${certificateProgrammes}列表,並在循環中每次將其分配給${certs} 如果您不想循環,則不要添加Iterable<CertificateProgramme> certificateProgrammes = certificateService.findAll(); 在模型中,只需添加一個類型為CertificateProgramme對象。 然后,您可以執行以下操作:

model.addAttribute("certs", /* however you get the specific one you want to check */);

並在html中

<!-- no iterating required, because you know which object you're talking about -->
<form th:if="${certs.flag == 'TRUE'}">

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM