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 '> but then > 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>
当我将字符串 '' 放入 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 '> but then > 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>