如何忽略百里香形式的特定字段?

时间:2019-01-07 12:28:35

标签: spring-mvc thymeleaf

我正在百里香叶中创建一个表单,该表单包含不属于我的模型的文件上载字段。 当我加载页面时,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?

1 个答案:

答案 0 :(得分:0)

您得到的错误是由于行

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

期望以字段表达式作为参数。

您可以替换

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

使用

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

如果任何字段有错误,将显示has-error类。 或者甚至可以用

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

与表单中的任何特定字段都不相关。

或者,您也可以在模型中将字段(uploadFile)添加为瞬时属性。