我有一份账户申请表(认证前),其中应显示国家列表(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”的普通目标对象都不能作为请求属性使用
这对我来说完全有意义,但我希望能够使用此列表而无需进行身份验证
谢谢你的关心
1条答案
按热度按时间dfddblmv1#
此问题与身份验证/授权无关。错误“bindingresult和bean名称'country'的普通目标对象都不能作为请求属性使用”表明这是spring绑定的问题。我认为问题不在于枚举,而在于选择:
如何检查问题是否在select而不是枚举中?删除/注解html选项元素,您应该会看到完全相同的错误。如果是这种情况,我的解决方案如下:
您正在使用th:field=“*{country}”,它与th:object一起使用。
如果您有一个指向此视图并希望使用th:object的控制器,那么您需要在html表单中包含th:object,并在控制器模型中添加要使用的对象。
如果没有控制器或其他东西来注入对象,请从select中删除th:字段。如果是这种情况,您可能甚至不需要th:字段