节奏。 render() 在生成 xml 文件时抛出异常

Rythm. render() throws exception while generating an xml file

我正在尝试使用 Rythm 模板生成 xml 文件,当我添加带有 @for()@if() 条件时出现 org.rythmengine.utils.TextBuilder build() 错误循环。

@if(errorObjs != null) {
  <Errors>
  @for(ErrorObject errObj : errorObjs) {
     <Error>
        <ErrorCode>@errObj.errorid</ErrorCode>
        <ErrorMessage>@errObj.errorcode</ErrorMessage>
     </Error>
  }
  </Errors>
}

您的模板没有问题,请尝试以下代码:

http://fiddle.rythmengine.org/#/editor

问题可能出在您的 Java 代码中。

@def class ErrorObject {
  String errorid;
  String errorcode;
  public ErrorObject(String id,String code) {
     errorid=id;
     errorcode=code;
  }
}
@{
  List<ErrorObject> errorObjs=new ArrayList<ErrorObject>();
  errorObjs.add(new ErrorObject("id1","code 1"));
  errorObjs.add(new ErrorObject("id2","code 2"));
  errorObjs.add(new ErrorObject("id3","code 3"));
}
@if(errorObjs != null) {
  <Errors>
  @for(ErrorObject errObj : errorObjs) {
     <Error>
        <ErrorCode>@errObj.errorid</ErrorCode>
        <ErrorMessage>@errObj.errorcode</ErrorMessage>
     </Error>
     }
 </Errors>
}

不是问题的答案,只是对 @if:

用法的评论

如果你想检查是否有东西 null 直接去:

@if(errorObjs) { // display the errors }

http://rythmengine.org/doc/directive.md#if

上查看有关 @if 指令的更多信息

关于代码的另一个建议是容器对象,如 List 应始终为非空值,而不是 return null 容器,return 空容器让你的代码更简洁。