2015-05-20 1 views
1

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

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

У вас есть возможность скачать скриншот с ошибкой? –

ответ

0

Там нет ничего плохого в шаблоне попробовать этот код на:

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> 
} 
0

не ответ на вопрос, просто комментарий об использовании в @if:

если вы хотите проверить, если что-то null перейти непосредственно:

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

См. Дополнительную информацию о директиве @if по адресу: http://rythmengine.org/doc/directive.md#if

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

+0

Спасибо, что приняли этот ответ. И я предполагаю, что ответ, предложенный @ wolfgang-fahl ниже, должен быть принят вместо этого. И вы можете нажать «вверх» для моего ответа ;-) –