ZK 文本框内容包含 <html> 标签

ZK Textbox content containing <html> tag

当我将字符串 '' 放入 ZK 文本框时,即

<textbox value="<html>" />

它会导致浏览器出现 JavaScript 错误

Uncaught SyntaxError: Unexpected token ILLEGAL 

而且在浏览器的开发者工具里看到生成的JS代码确实不完整:

 zkmx(
[0,'g2JQ_',{dt:'z_y20',cu:'\x2Fdtag',uu:'\x2Fdtag\x2Fzkau',ru:'\x2Fzul\x2Fcomponent\x2Fmenu.zul',style:'width\x3A100\x25\x3B',ct:true},[
...
['zul.inp.Textbox','g2JQp7',{id:'tb',$[=13=]onBlur:true,$[=13=]onSwipe:true,$[=13=]onError:true,$[=13=]onAfterSize:true,$[=13=]onChanging:true,$onChange:true,$onSelection:true,$[=13=]onFocus:true,width:'500px',style:'font-size:11px;',_value:'
</div>

如何转义文本框的内容,以便在文本框中显示任何 HTML 代码?

我试过了

Replace '<' with '&gt; but then &gt; is displayed.

我也试过了

<![CDATA[ <html></html>]]>

但是后来就是字面上显示了,也就是

<![CDATA[

更新

这不知何故是因为我们有包含多个 ZK 页面的 JSP。 导致问题的确切内容是结束 HTML 标记

</html>

解决方法如下:

Events.echoEvent("onLater", txtDescription, txtDescription);
   txtDescription.addEventListener("onLater", new EventListener<Event>() {
                @Override
                public void onEvent(Event event) throws Exception {
                    txtDescription.setValue("<html>...</html>"); 
               }

   });

通常你应该从你的作曲家或视图模型中获取值,然后这个问题就不存在了。

如果你想在 zul 中做,你可以像这样在 zscript 中创建一个参数:

<zscript>
    <![CDATA[
        String a = "<html>";
]]>
</zscript>
<textbox value="${a}" />

Here I created a fiddle所以你可以测试它。

很多时候我们在数据库中保存了 HTML 代码,但是当我们要在 zk 页面中显示保存的值时,它会显示 HTML 代码以及数据。

要解决这个问题,我们必须使用 HTML escape 有很多方法可以解决这个问题

您也可以在 Java 侧以及 zul 页面上执行此操作,这是在 zul 页面中实现的简单方法

<html>
      <![CDATA[
             ${vm.accessYourValue}

      ]]>
</html>