2014-10-04 2 views
0

Отзыв XDocReport wiki для условного текста.Velocity if condition insertion in xdocreport docx template

https://code.google.com/p/xdocreport/wiki/DocxReportingJavaMainCondition

Не ясно, как вставлять код шаблона скорости в DOCX MERGEFIELD.

В docx было создано месторождение waterhare.

Контекст заменить код выглядит следующим образом:

IContext context = report.createContext(); 

// populate map 
HashMap<String, Object> map = new HashMap<String, Object>(); 
map.put("water_share", "#if($water_share_transfer_flag)\n" 
    + "\t<strong>Velocity!</strong>\n" 
    + "#end"); 
map.put("water_share_transfer_flag", new Boolean("true")); 
context.putMap(map); 

в результате DOCX заменяет water_share MERGEFIELD с условием скорости, но оленья кожа заменить переменную water_share_transfer_flag и отображения результата Velocity !!.

ответ

0

Вы можете сравнить ваши docx как шаблон Velocity и IContext с VelocityContext. Так что если вы хотите использовать #if управлять условием, которое вы не должны использовать его в контексте, как вы сделали, но использовать его внутри mergefields (внутри DOCX):

  • создать MERGEFIELD, который содержит стартовое состояние с #если. В вашем случае MERGEFIELD содержит:

#if($water_share_transfer_flag)

  • добавить содержание, которое должно быть отображено в вашем DOCX после этого MERGEFIELD. В вашем случае:

Velocity!

  • создать вторую MERGEFIELD после содержания "Velocity!", Который содержит ваш конец состояние #End:

#end

+0

ARE YOU предлагая вставить mergefield в docx следующим образом - {MERGEFIELD "#if ({MERGEFIELD $ water_share_transfer_flag}) Текст абзаца идет здесь #end"}. –

+0

Также видел проблему 91, которая, как представляется, разрешает аналогичную проблему - https://code.google.com/p/xdocreport/issues/detail?id=91 –

+0

Вычисленный, значение должно быть {MERGEFIELD ", если ($ condition_flag_as_boolean) "} Текст абзаца здесь {MERGEFIELD #end}. Спасибо за помощь Angelo –

Смежные вопросы