2014-01-08 2 views
1

Я пытаюсь использовать модель MVVM в zk. Если я использую форму в гк и попытаться сбросить значение, которое он не является обязывающимzk form reset не работает в MVVM

<?page title="" contentType="text/html;charset=UTF-8"?> 
    <zk> 
     <window border="none" apply="org.zkoss.bind.BindComposer" 
      viewModel="@id('ix') @init('com.Controller')" 
      form="@id('fx') @load(ix) @save(ix,before='add')" > 
      <textbox value="@bind(fx.title)"/> 
    <button onClick="@command('reverse', fx=fx, field='title')" label="Reverse"/> 

     </window> 
    </zk> 

@Command 
@NotifyChange("title") 
public void reverse() { 
    String value = (String) fx.getField(fieldName); 
    String newValue = new StringBuilder(value).reverse().toString(); 
setTitle(newValue); 
} 

Но если я использую <textbox value="@bind(ix.title)"/> непосредственно без формы он работает. Могу ли я знать, что случилось с этим кодом.

ответ

0

Я объясню вам, что случилось.

<button onClick="@command('reverse', fx=fx, field='title')" label="Reverse"/> 

Здесь вы выберете команду reverse и вы дадите ей 2 параграфа, fx и поле.

@Command 
@NotifyChange("title") 
public void reverse() { 

Здесь у вас есть свой метод команды, но у вас нет параметров, которые вы ожидаете. Его также не нужно указывать парам с ним, потому что Title является возможной глобальной частной строкой. Если вы хотите, чтобы дать Params, то это должно быть код:

@Command 
@NotifyChange("title") 
public void reverse(@BindingParam("fx") Form fx, @BindingParam("title") String title) { 

второй:

form="@id('fx') @load(ix) @save(ix,before='add')" > 

Не требуется, вы используете MVVM так вы называете ВМ по IX, это станет для вас absolete.

То, что вы здесь делаете, иногда необходимо для сеток или списков, которые не обновляются непосредственно с помощью @bind, но только нажатием кнопки сохранения.
Это потому, что @save настолько мощным, что он изменит значения в БД без вызова метода сохранения.
@bind (ix.title) на самом деле тот же, что и @load (ix.title) @save (ix.title), но сгруппирован одним словом для щадящего кода.

Надеюсь, это поможет вам.

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