2015-07-02 70 views
1

當我把字符串「」爲ZK文本框,這是含<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',$$0onBlur:true,$$0onSwipe:true,$$0onError:true,$$0onAfterSize:true,$$0onChanging:true,$$1onChange:true,$$1onSelection:true,$$0onFocus:true,width:'500px',style:'font-size:11px;',_value:' 
 
</div>

如何逃避文本框的內容,以便我可以在文本框中顯示任何HTML代碼?

我試圖

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

我也試過

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

但隨後被逐字顯示,也就是說,也是

<![CDATA[ 

UPDATE

這在某種程度上是由於我們擁有包含多個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>"); 
 
       } 
 

 
    });

回答

1

通常你應該從你的作曲家或視圖模型值,然後這個問題就不存在了。

如果你想這樣做在ZUL,你可以在zscript中的參數是這樣的:

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

Here I created a fiddle這樣你就可以對其進行測試。

+0

謝謝您的回答!我們從作曲家那裏做,但問題存在!我會在小提琴中測試它,也許問題是由於我們的ZUL頁面包含在JSP中。 –

+0

如果您可以創建小提琴,那對尋找解決方案會非常有幫助。 – chillworld

0

很多時候我們已經在數據庫中保存了HTML代碼,但是當我們要在zk頁面中顯示保存的值時,它會顯示HTML代碼以及數據。

要解決這個問題,我們必須使用HTML逃生有很多的方式來解決這個

你可以做它在Java方面以及ZUL頁面,這裏是簡單的方法怎麼能在ZUL頁面實現

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

     ]]> 
</html>