我正在百里香叶中创建一个表单,该表单包含不属于我的模型的文件上载字段。
当我加载页面时,thymeleaf抱怨并为该字段抛出NotReadablePropertyException
。
如何让百里香无视模型中不存在该字段的事实?
代码:
<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="#" 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>
错误:
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?
答案 0 :(得分:0)
您得到的错误是由于行
th:classappend="${#fields.hasErrors('uploadFile')}
期望以字段表达式作为参数。
您可以替换
th:classappend="${#fields.hasErrors('uploadFile')}
使用
th:classappend="${#fields.hasErrors('*')}
如果任何字段有错误,将显示has-error类。 或者甚至可以用
替换它th:classappend="${#fields.hasErrors('global')}
与表单中的任何特定字段都不相关。
或者,您也可以在模型中将字段(uploadFile)添加为瞬时属性。