Как связать часть строки в 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)}"

С уважением

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