【问题标题】:Thymeleaf empty value checkThymeleaf 空值检查
【发布时间】:2017-05-01 18:46:01
【问题描述】:

我正在使用 Thymeleaf 模板发送电子邮件。我有一个像这样的模板:

My name is ${name}

如果name 为空或null,我不想发送电子邮件。是否有任何我可以设置的 Thymeleaf 属性会产生错误并且不会发送邮件?因为在没有值的电子邮件中发送“我的名字是”没有任何意义。

我从 Thymeleaf 上下文中获取所有值,变量可能是不同类型的,例如 ListMap 等。我也尝试了以下方法,但它并没有解决我的问题,因为对象始终可用:

HashMap<String,Object> allVar = ctx.getVariables();
boolean isVAlid;

for(HashMap.Entry<String, Object> entry : allVar.entrySet()){
    logger.info("[ESUB2.0] key and Value" + entry.getKey() + "Value" + entry.getValue());
    if(entry.getValue()==null){
       logger.info("[ESUB2.0] Null check ")
       isVAlid = true
    }
}

【问题讨论】:

  • 当您在ctx 上设置name 的值时,如果它为空,您不能只生成错误并跳过发送电子邮件的代码吗?喜欢if (StringUtils.isEmpty(name)) { log.error("Null name"); return; }

标签: java email thymeleaf


【解决方案1】:

在您的代码中,只需将 isVAlid = true 替换为 isVAlid = false,因为如果值为 null,则它无效:

HashMap<String,Object> allVar = ctx.getVariables();
boolean isVAlid;
for(HashMap.Entry<String, Object> entry : allVar.entrySet()){
    logger.info("[ESUB2.0] key and Value" + entry.getKey() + "Value" + entry.getValue());
    if(entry.getValue()==null){
        logger.info("[ESUB2.0] Null check ");
        isVAlid = false;
    }
}

entry.getValue()==null 替换为org.apache.commons.lang 中的StringUtils.isEmpty() 为空("") 和null 字符串

【讨论】:

  • 感谢 Sebastien.. 我在调试时这样做了。只是希望有更好的方法来做到这一点..
猜你喜欢
  • 2020-09-05
  • 2018-01-27
  • 2013-05-16
  • 2014-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多