在一个投影对象中,每当当前登录用户的ID等于相应记录/元素上的用户ID时,我试图引入一个字段isOwner
。
所以,基本上就是这样:
public interface Quiz {
@Value("#{userUtil.equalsLoggedInUser(target.appUser)}")
Boolean isOwner();
}
为此,我有一个UtilService
,它获取登录的用户记录并进行必要的比较,如下所示:
@Service
public class UserUtil {
private final AppUserRepository appUserRepository;
@Autowired
public UserUtil( AppUserRepository appUserRepository) {
this.appUserRepository = appUserRepository;
}
public AppUserEntity getLoggedInAppUserEntity() {
String uid = ServiceUtil.getUidFromPrincipal();
return this.appUserRepository.findUserByFirebaseUuid(uid)
.orElseThrow(() -> new UsernameNotFoundException("Invalid or unknown \"uid\"."));
}
public Boolean equalsLoggedInUser(AppUserEntity appUserEntity) {
return Objects.equals(appUserEntity.getId(), this.getLoggedInAppUserEntity().getId());
}
}
以及
@Configuration
public class UtilBeans {
@Bean
public UserUtil getUserUtil(AppUserRepository appUserRepository) {
return new UserUtil(appUserRepository);
}
}
我相信这可以做得更干净和/或更有效,但现在我只希望它的工作。
错误
运行代码,我得到的错误表明,找不到userUtil
:
已解决[org.springframework.http.converter.HttpMessageNotWritableException:无法写入JSON:EL 1008 E:在类型为“org.springframework.data.projection.SpelEvaluatingMethodInterceptor$TargetWrapper”的对象上找不到属性或字段“userUtil”-可能不是公共的或无效的?]
我不确定如何在SPEL中使用UserUtil
,我也尝试过定义UserUtil
的静态版本
@Value("#{T(server.service.UserUtil).equalsLoggedInUser(target.appUser)}")
Boolean isOwner();
最后还是犯了同样的错误
1条答案
按热度按时间tnkciper1#
请使用
或