ZK包含标记的文本框内容

时间:2015-07-02 10:08:21

标签: zk

当我把字符串''进入ZK文本框,即

<textbox value="<html>" />

它会在浏览器中导致JavaScript错误

Uncaught SyntaxError: Unexpected token ILLEGAL 

我可以在浏览器的开发人员工具中看到生成的JS代码真的不完整:

&#13;
&#13;
 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',$$0onBlur:true,$$0onSwipe:true,$$0onError:true,$$0onAfterSize:true,$$0onChanging:true,$$1onChange:true,$$1onSelection:true,$$0onFocus:true,width:'500px',style:'font-size:11px;',_value:'
</div>
&#13;
&#13;
&#13;

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

我试过

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

我也试过

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

但是它实际上是显示的,也就是

<![CDATA[

更新

这是因为我们有JSP包含几个ZK页面。 导致问题的确切内容是关闭HTML标记

</html>

解决方法如下:

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

   });
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

通常你应该从你的composer或viewmodel中获取值,然后这个问题就不存在了。

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

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

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

答案 1 :(得分:0)

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

要解决此问题,我们必须使用HTML转义,有很多方法可以解决此问题

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

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

      ]]>
</html>