UserEntity:
public class UserEntity{
/**
* 用户ID
*/
private String userId;
/**
* 账号
*/
private String account;
/**
* 密码
*/
private String password;
/**
* 角色
*/
private Role role;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId == null ? null : userId.trim();
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account == null ? null : account.trim();
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password == null ? null : password.trim();
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
}
在user对象中我们有个角色,那么我们可以通过${user.role.rolename}获取当前用户的角色名称
问题来了当role没有赋值的时候,在jsp中${}表达式会直接忽略不显示,而freemarker会报异常,还是一大堆,freemarker就需要手动去处理
这的role是null因此报错了,而在freemarker中报的异常,排错还挺难的,一大顿,这里就需要我们手动去处理null,这里就要用到!
${user.role! }
此刻的效果就跟jsp中的${}el表达式一样了,如果为空就不显示了,当在!后进行说明如:获取当前用户的角色:${user.role!"当前用户没有角色"}如果为空默认值就是后面的值
而当写成这样的时候:获取当前用户的角色:${user.role.rolename!} 而role任然没值的时候依然会报错,而正确的方式<br/>获取当前用户的角色:${(user.role.rolename)!}
?? 用于判断是否为空(原意为是否存在)
<#if user.role??>
如果用户有权限角色...
<#else>
当前用户没有权限角色
</#if>
${user.role???string}这里将结果以字符串的形式输出:true 或者false
${user.role???string("YES","NO")} 这判定用户权限角色为空,不为空则返回YES,为空返回NO