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
для контейнера верните пустой контейнер, чтобы сделать ваш код намного чище.