ZK:使用自定义Id生成器生成硒,同时具有动态ID

时间:2015-04-22 09:58:22

标签: selenium zk

我正在使用自定义ID生成器the one listed here in the article

它工作正常,但是我为我的标签生成了动态ID:

<tabpanels children="@load(vm.myTabsList) @template('myTemplate')" >
    <template name="myTemplate" var="each">
        <tabpanel id="tabPanel${each.key}">
            <include src="zul/myTabZul.zul/>
        </tabpanel>
    </template>
</tabpanels>

我遇到了这个例外:

org.zkoss.zk.ui.UiException: Illegal character, }, not allowed in uuid,

抛出错误的方法并没有留下很多空间......不确定如何绕过它。

public static void checkUuid(String uuid) {
    int j;
    if (uuid == null || (j = uuid.length()) == 0)
        throw new UiException("uuid cannot be null or empty");

    while (--j >= 0) {
        final char cc = uuid.charAt(j);
        if ((cc < 'a' || cc > 'z') && (cc < 'A' || cc > 'Z')
        && (cc < '0' || cc > '9') && cc != '_')
            throw new UiException("Illegal character, "+cc+", not allowed in uuid, "+uuid);
    }
}

虽然原始生成器看起来很好,但它可能不会同时生成Id。

如果有人在使用selenium和ZK,请感谢您的意见。

2 个答案:

答案 0 :(得分:1)

我认为它与Selenium无关。

决赛&#39;}&#39;被视为您的ID字符串的一部分,因为&#39; tabPanel $ {each.key}&#39;不是有效的EL表达式。看看here如何编写有效的EL表达式。 我建议你使用核心的cat方法连接这两个部分(tabPanel和$ {each.key})。您的代码将成为:

<!-- at the beginning of your file -->
<?taglib uri="http://www.zkoss.org/dsp/web/core" prefix="c"?>
...
<tabpanel id="${c:cat('tabPanel',each.key)}">

&#39; each.key&#39;由于周围的$ {。}(它不必直接接触),将被正确解释。

我希望现在还为时不晚,而且还有帮助。

答案 1 :(得分:0)

我认为这是因为您尝试使用动态ID,但它并不接受它。

tabPanel${each.key}包含&#39;}&#39;谈到(并标记他们从右到左检查,这是我们遇到的第一个)

随着更多的zul,我可以建议你如何改变它。