我在表单中有以下构造:
<tr th:each="team : ${teams}" th:with="checked = *{#lists.contains(userTeams, team.internalId)}">
其中:
结果:
org.springframework.expression.spel.SpelEvaluationException: EL1007E:(pos 7): Property or field 'internalId' cannot be found on null
第2版
<tr th:each="team : ${teams}" th:with="checked = *{#lists.contains(userTeams, __${team.internalId}__)}">
和例外:
org.springframework.expression.spel.SpelEvaluationException: EL1008E:(pos 7): Property or field 'b' cannot be found on object of type 'x.domain.UserWrapper' - maybe not public?
team.internalId应该是“b-123”字符串,但是,它被评估为一个aritmetic操作,因此字段'b'
如何正确地将'team.internalId'值传递给contains()方法?
感谢您的帮助!
答案 0 :(得分:0)
错误消息Property or field 'internalId' cannot be found on null
表示您的team
变量实际上为空,这意味着您的teams
列表中存在空元素。
如果你不期望你的teams
有任何空项,那么你需要看一下填充它的内容,看看它是如何到达那里的。
如果您希望teams
有空项,那么
team?.internalId
之类的Safe Navigation operator。这不会在null上给出错误,但只会传播null值。或者,您根本不想处理空值,在这种情况下您应该跳过它们,如下所示:
<tr th:each="team : ${teams}" th:if="${team != null}" th:with="checked = *{#lists.contains(userTeams, team.internalId)}">