当我把字符串''进入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',$$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;
如何逃避文本框的内容,以便在文本框中显示任何HTML代码?
我试过
Replace '<' with '> but then > is displayed.
我也试过
<![CDATA[ <html></html>]]>
但是它实际上是显示的,也就是
<![CDATA[
更新
这是因为我们有JSP包含几个ZK页面。 导致问题的确切内容是关闭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>");
}
});
&#13;
答案 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>