Как связать часть строки в ZK при использовании модели MVVM
Итак, допустим, мы хотим сделать что-то вроде этого:
<label zclass="class1 class2 @load(vm.class)" />
Как это сделать в ZK?
приведенный выше код рендеринга zclass
как class1 class2 @load(vm.class)
, Но мы хотим выполнить @load
?
2 ответа
Решение
Ты можешь использовать cat
подобные методы из core
taglib для объединения строк. Что-то вроде этого:
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
...
<label zclass="@load(c:cat('class1 class2 ', vm.class))" />
Для более подробной информации о core
методы см. здесь
Чтобы сделать это, я пошел с AbstractViewModel, который содержит все те "технические" методы, которые я хотел бы использовать в моем Zul.
Затем я делаю каждый из моих Viewmodel расширяет этот abstractViewModel
public class AbstractTechnicalViewModel {
/** @see java.text.MessageFormat#format(String, Object...) */
public String format(final String pPattern, final Object... pParams) {
return MessageFormat.format(pPattern, pParams);
}
/** @see org.apache.commons.lang.StringUtils#concatenate(Object[]) */
public String concat(final Object... pParams) {
return StringUtils.join(pParams);
}
}
А то по моему зул
tooltiptext="${vm.format(labels.my.label, param1)}"
С уважением