Bagaimana cara mengabaikan bidang tertentu dalam formulir di thymeleaf?

Saya membuat formulir di thymeleaf yang berisi bidang unggah file yang bukan bagian dari model saya. Saat saya memuat halaman, thymeleaf mengeluh dan melempar NotReadablePropertyException untuk bidang itu.

Bagaimana saya bisa membuat thymeleaf mengabaikan fakta bahwa bidang tersebut tidak ada pada model?

Kode:

<div class="form-group"
     th:classappend="${#fields.hasErrors('uploadFile')}? 'has-error'">
    <label class="col-sm-12 control-label" style="text-align: left; margin-bottom: 7px;">Upload Photo</label>
    <div class="col-sm-12" style="margin-bottom:5px;">
        <div class="fileinput fileinput-new input-group" data-provides="fileinput">
            <div class="form-control" data-trigger="fileinput">
                <i class="glyphicon glyphicon-file fileinput-exists"></i>
                <span class="fileinput-filename"></span>
            </div>
            <span class="input-group-addon btn btn-default btn-file">
                <span class="fileinput-new">Select file</span>
                <span class="fileinput-exists">Change</span>
                <input type="file" name="uploadFile" accept="image/*" required>
            </span>
            <a href="/id#" class="input-group-addon btn btn-default fileinput-exists" data-dismiss="fileinput">Remove</a>
        </div>
        <p id="error" style="position:absolute;color:#FF0000;margin-top:-7px"></p>
    </div>
</div>

Kesalahan:

org.springframework.beans.NotReadablePropertyException: Invalid property 'uploadFile' of bean class [bean.Library]: Bean property 'uploadFile' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter?

person Trinopoty    schedule 07.01.2019    source sumber


Jawaban (1)


kesalahan yang Anda dapatkan adalah karena garis

th:classappend="${#fields.hasErrors('uploadFile')}

yang mengharapkan ekspresi bidang sebagai parameter.

Anda bisa menggantinya

th:classappend="${#fields.hasErrors('uploadFile')}

dengan

th:classappend="${#fields.hasErrors('*')}

dimana kelas has-error akan muncul jika ada kesalahan pada salah satu field. Atau Anda bahkan bisa menggantinya dengan

th:classappend="${#fields.hasErrors('global')} 

yang tidak terkait dengan bidang tertentu dalam formulir.

Atau sebagai alternatif, Anda dapat menambahkan bidang (uploadFile) ke dalam model sebagai atribut sementara.

person Periklis Douvitsas    schedule 07.01.2019