Rythm. render() генерирует исключение при генерации XML-файла

Я пытаюсь сгенерировать XML-файл, используя шаблон Rythm, и я получаю org.rythmengine.utils.TextBuilder ошибка build() при добавлении @if() состояние с @for() петля.

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

2 ответа

Решение

В вашем шаблоне нет ничего плохого, попробуйте код ниже:

http://fiddle.rythmengine.org/

Проблема может быть в вашем коде 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 }

Узнайте больше о @if директива на http://rythmengine.org/doc/directive.md#if

Другим предложением о коде является объект-контейнер как List всегда должно быть ненулевым значением вместо возврата null для контейнера верните пустой контейнер, чтобы сделать ваш код намного чище.

Другие вопросы по тегам