EL1008E: 在“java.util.ArrayList”类型的对象上找不到属性或字段“内容” - 可能不是公共的或无效的?
Posted
技术标签:
【中文标题】EL1008E: 在“java.util.ArrayList”类型的对象上找不到属性或字段“内容” - 可能不是公共的或无效的?【英文标题】:EL1008E: Property or field 'content' cannot be found on object of type 'java.util.ArrayList' - maybe not public or not valid? 【发布时间】:2018-11-20 18:56:20 【问题描述】:我尝试为我的项目(电话簿)制作简单的过滤器,以便能够通过电子邮件而不是 id 找到用户联系人。当我简单地启动 URL 时:http://localhost:8080/home/phonebook。我收到以下错误。
错误信息
org.thymeleaf.exceptions.TemplateProcessingException:异常 评估 SpringEL 表达式:“data.content”(模板: “/home/phonebook” - 第 29 行,第 13 列)
原因: org.springframework.expression.spel.SpelEvaluationException:EL1008E: 在类型的对象上找不到属性或字段“内容” 'java.util.ArrayList' - 可能不公开或无效?
HomeController
@RequestMapping(value = "/home/phonebook", method = RequestMethod.GET)
public String showPage(Model model, @RequestParam(defaultValue = "0") int page)
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
User user = userService.findUserByEmail(auth.getName());
model.addAttribute("data",phonebookRepository.findAllByUserEmail(user.getEmail(),PageRequest.of(page,10)));
model.addAttribute("currentPage",page);
return "/home/phonebook";
Phonebook.html
<tr th:each="phonebook :$data.content">
<td th:text="$phonebook.id"></td>
<td th:text="$phonebook.surname"></td>
<td th:text="$phonebook.firstname"></td>
<td th:text="$phonebook.phoneNumber"></td>
<td>
<a th:href="@delete/(id=$phonebook.id)" class="btn btn-danger delBtn">Delete</a>
<a th:href="@findOne/(id=$phonebook.id)" class="btn btn-primary eBtn">Edit</a></td>
</tr>
</tbody>
</table>
<hr/>
<ul class="nav nav-pills">
<li class="nav-item" th:each="i: $#numbers.sequence(0,data.totalPages-1)">
<a th:href="@/home/phonebook(page=$i)" th:text="$i" class="nav-link"
th:classappend="$currentPage==$i?'active':''"></a>
</li>
</ul>
电话簿存储库
@Repository("phonebookRepository")
public interface PhonebookRepository extends JpaRepository<Phonebook,Integer>
List<Phonebook> findAllByUserEmail(String email, Pageable pageable);
安全配置
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery("select email, password, active from users where email=?")
.authoritiesByUsernameQuery("select u.email, r.role from users u inner join user_role ur on(u.user_id=ur.user_id) inner join role r on(ur.role_id=r.role_id) where u.email=?")
.passwordEncoder(passwordEncoder());
更新 1
对<tr th:each="phonebook :$data">
进行了更改,我认为它修复了它,但我遇到了一个新错误;
org.thymeleaf.exceptions.TemplateProcessingException:异常 评估 SpringEL 表达式: “#numbers.sequence(0,data.totalPages-1)”(模板:“/home/phonebook” - 第 42 行,第 38 列)
原因: org.springframework.expression.spel.SpelEvaluationException:EL1008E: 在类型的对象上找不到属性或字段“totalPages” 'java.util.ArrayList' - 可能不公开或无效?
【问题讨论】:
【参考方案1】:改变
<tr th:each="phonebook : $data.content">
到
<tr th:each="phonebook : $data">
因为要迭代查询列表结果,但data.content
只是一个属性。
【讨论】:
我认为它有效,但我不能肯定地说,因为一个新的错误 org.thymeleaf.exceptions.TemplateProcessingException:评估 SpringEL 表达式的异常:“#numbers.sequence(0,data.totalPages-1)”(模板:“/home/phonebook”-第 42 行,col 38) 原因:org.springframework.expression.spel.SpelEvaluationException: EL1008E: 在“java.util.ArrayList”类型的对象上找不到属性或字段“totalPages” - 可能不是公共的或无效的?我更新了我的帖子,以便您查看 phonebook.html @Ekeradata
是一个ArrayList
,它没有totalPages
的属性,所以在你的代码<li class="nav-item" th:each="i: $#numbers.sequence(0,data.totalPages-1)">
中它是错误的,你需要重写它
你解决了arraylist不公开或无效的问题吗?【参考方案2】:
data.content 只是一个属性,而是通过 $data 循环
【讨论】:
以上是关于EL1008E: 在“java.util.ArrayList”类型的对象上找不到属性或字段“内容” - 可能不是公共的或无效的?的主要内容,如果未能解决你的问题,请参考以下文章
com.fasterxml.jackson.databind.exc.MismatchedInputException:无法从 START_OBJECT 令牌中反序列化 `java.util.Arra
笔记本电脑出现 0x1008e524指令引用的0x0550298a内存.因0xc000009c的错误状态而无法将请求的数据放入内存
Java 网络编程--------------------基于TCP/IP(加入多线程)