Search code examples
html-tablezk

Weird bug with native HTML and zk-if


I'm trying to omit a table row when a boolean condition is false:

  <zk if="${vm.visible}">
    <n:tr>
      <n:td>
        <label value="Should be visible, too" />
      </n:td>
    </n:tr>
  </zk>

When visible is true, the following HTML is rendered:

  <tr>   </tr>

Why is that?

ZK Fiddle: http://zkfiddle.org/sample/3ikg0ch/3-Weird-bug-with-native-HTML-and-zk-if

The full ZUL:

<zk  xmlns:n="native">
  <window border="normal" title="hello" viewModel="@id('vm') @init('pkg$.TestComposer')">

    <div>
      visible=${vm.visible}
    </div>

    <n:table style="border: 1px solid green;">
      <n:tr>
        <n:td>
          <label value="Visible" />
        </n:td>
      </n:tr>
      <zk if="${vm.visible}">
        <n:tr>
          <n:td>
            <label value="Should be visible, too" />
          </n:td>
        </n:tr>
      </zk>
    </n:table>

    <n:table style="border: 1px solid red;">
      <n:tr>
        <n:td>
          <label value="Table 2" />
        </n:td>
      </n:tr>
      <zk if="${vm.hidden}">
        <n:tr>
          <n:td>
            <label value="Should be hidden" />
          </n:td>
        </n:tr>
      </zk>
    </n:table>
  </window>
</zk>

View model:

package pkg$;

import org.zkoss.zk.ui.*;
import org.zkoss.zk.ui.event.*;
import org.zkoss.zk.ui.util.*;
import org.zkoss.zk.ui.ext.*;
import org.zkoss.zk.au.*;
import org.zkoss.zk.au.out.*;
import org.zkoss.zul.*;

public class TestComposer extends GenericForwardComposer{

  public boolean isVisible() {
    return true;
  }

  public boolean isHidden() {
    return false;
  }
}

Solution

  • I'm surprised that doesn't work either but this does: (remove the enclosing zk if=... tag

    <n:tr if="${vm.visible}">
      <n:td>
        <label value="Should be visible, too" />
      </n:td>
    </n:tr>