身份验证前对枚举的访问

5sxhfpxr  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(261)

我有一份账户申请表(认证前),其中应显示国家列表(iso)。我在枚举中有此列表,但我无法访问它,因为我既没有得到授权,也没有“提供”此枚举的控制器
我认为:

<div class="form-group" style="padding-bottom: 10px;  display: flex;justify-content: 
left;margin-bottom:0;">
            <label style=" color:white;font-size:12px;margin-right: 10px;" 
for="countryInput"
                   th:text="#{modif.country}"></label>
            <select th:name="country"
                    type="text" th:field="*{country}" class="form-control" 
id="countryInput"
                    th:errorclass="invalid"
                    th:placeholder="#{modif.country}"
                    style="width: 200px;font-size:12px;margin-bottom:0;">
                <option th:each="country :${T(fr.model.enumeration.Country).values()}"
                        th:value="${country}" th:text="${country}"></option>
            </select>
            <div th:errors="*{country}" style="color: red">
                Error
            </div>
        </div>

枚举:

package fr.model.enumeration;

public enum Country {
France,
Afghanistan, Albania, Algeria, AmericanSamoa,
Andorra, Angola, Anguilla, Antarctica, ...
}

我得到了这个错误:bindingresult和bean名称“country”的普通目标对象都不能作为请求属性使用
这对我来说完全有意义,但我希望能够使用此列表而无需进行身份验证
谢谢你的关心

dfddblmv

dfddblmv1#

此问题与身份验证/授权无关。错误“bindingresult和bean名称'country'的普通目标对象都不能作为请求属性使用”表明这是spring绑定的问题。我认为问题不在于枚举,而在于选择:

<select th:name="country" type="text" th:field="*{country}" class="form-control" id="countryInput" th:errorclass="invalid" th:placeholder="#{modif.country}" style="width: 200px;font-size:12px;margin-bottom:0;">

如何检查问题是否在select而不是枚举中?删除/注解html选项元素,您应该会看到完全相同的错误。如果是这种情况,我的解决方案如下:
您正在使用th:field=“*{country}”,它与th:object一起使用。
如果您有一个指向此视图并希望使用th:object的控制器,那么您需要在html表单中包含th:object,并在控制器模型中添加要使用的对象。
如果没有控制器或其他东西来注入对象,请从select中删除th:字段。如果是这种情况,您可能甚至不需要th:字段

相关问题