错误:无法在null上找到属性或字段“headUrl”。
但是我找不到null。我检查了我的代码,仍然不知道。
结果是应该有10条新闻,其他9条新闻正常,最后有错误,无法正确显示网址。
这是代码(我不知道如何粘贴图片):
Home.html中:
<div class="user-avatar">
<a href="/user/${vo.user.id}">
<img width="32" class="img-circle" th:src="${vo.user.headUrl}">
</a>
</div>
班级用户:
private String headUrl;
public User() {}
public User(String name) {
this.name = name;
this.password = "";
this.salt = "";
this.headUrl = "";
}
public String getHeadUrl() {
return headUrl;
}
public void setHeadUrl(String headUrl) {
this.headUrl = headUrl;
}
数据库:
@Test
public void contextLoads() {
Random random = new Random();
for (int i = 1; i < 10; i++) {
User user = new User();
user.setHeadUrl(String.format("http://images.nowcoder.com/head/%dt.png", random.nextInt(100)));
user.setName(String.format("USER%d", i));
user.setPassword(String.format("PASSWORD--%d",i*i));
user.setSalt(String.format("SALT %d HelloWorld",i*5+20));
userDao.addUser(user);
}
}
主:
@RequestMapping(path = {"/", "/index"}, method = {RequestMethod.GET,RequestMethod.POST})
public String index(Model model){
List<News> newsList = newsService.getLatesNews(0, 0,10);
List<Map> vos = new ArrayList<>();
for(News news :newsList){
Map<String, Object> vo = new HashMap<String, Object>();
vo.put("news",news);
vo.put("user", userService.getUser(news.getUserId()));
vos.add(vo);
}
model.addAttribute("vos", vos);
return "home.html";
}
Class UserService:
public class UserService {
@Autowired
private UserDao userDao;
public User getUser(int id)
return userDao.selectById(id);}
答案 0 :(得分:1)
您创建一个新的vo(在新闻循环中)并设置用户但用户可能为null(userService.getUser(news.getUserId()可能返回null)。
如果你想显示vo.user.headUrl,即使用户为null,你也可以写这个
vo?.user?.headUrl
以上代码与显示用户相同(如果存在),如果存在则显示headUrl。