浏览器无法正确解析 HTML - Grails 2

Browser can not parse HTML properly - Grails 2

我正在从控制器(后端)生成 HTML,但浏览器无法正确解析 HTML。

控制器代码:

def getValue (returnIndex) {

        String dropDown = "<select name='" + returnIndex + "' style=''>"

        def CatArr = new BudgetViewDatabaseService().executeQuery("SELECT c.id,c.name AS categoryName FROM chart AS a LEFT JOIN crtClass AS b ON a.id=b.chart_class_type_id LEFT JOIN chart_group AS c ON b.id=c.chart_class_id WHERE c.status=1")
       
 if (CatArr.size()) {
            for (int i = 0; i < CatArr.size(); i++) {
                def catId = CatArr[i][0]
                def ProductArr
                ProductArr = new BudgetViewDatabaseService().executeQuery("SELECT id,accountCode,accountName FROM bv.crtMsr where status='1' AND chart_group_id='" + catId + "'")
                if (ProductArr.size()) {
                    dropDown += "<optgroup label='" + CatArr[i][1] + "'>"
                    for (int j = 0; j < ProductArr.size(); j++) {
                        dropDown += "<option value='" + ProductArr[j][1] + "' >" + ProductArr[j][1] + "  " + ProductArr[j][2] + "</option>"
                    }
                    dropDown += "</optgroup>"
                }
            }
        }

        dropDown += "</select>"
        return dropDown
    }

查看页面代码:

<div class="fieldContainer fcCombo">
      <label>
              My GL <b>:</b>
     </label>
  
    ${new CoreParamsHelperTagLib().getValue('formFourGLAccount')}
</div>

问题:

生成的HTML看起来像:

当我在浏览器的编辑模式下打开 HTML 时,它看起来像:

    &lt;select name='formFourGLAccount' style=''&gt;&lt;optgroup 
label='Overige immateriële bezittingen'&gt;&lt;option value='0430' &gt;0430  Overige niet 
materiële bezittingen&lt;/option&gt;&lt;/optgroup&gt;&lt;optgroup label='Computers en 
computerapparatuur'&gt;&lt;option value='0210' &gt;0210  Computers en 
computerapparatuur&lt;/option&gt;&lt;option value='0211' &gt;0211  Afschrijving computers en 
computerapparatuur&lt;/option&gt;&lt;/optgroup&gt;&lt;optgroup label='Overige materiële 
bezittingen'&gt;&lt;option value='0250' &gt;0250  Overige materiële 
bezittingen&lt;/option&gt;&lt;option value='0251' &gt;0251  Afschrijving overige materiele 
bezittingen&lt;/option&gt;&lt;/optgroup&gt;&lt;optgroup label='Waarborgsommen'&gt;&lt;option 
value='0300' &gt;0300  Waarborgsommen&lt;/option&gt;&lt;/optgroup&gt;&lt;optgroup 
label='Deelnemingen in andere bedrijven'&gt;&lt;option value='0310' &gt;0310  Aandeel of belang 
 in andere bedrijven&lt;/option&gt;&lt;/optgroup&gt;&lt;optgroup label='Strategische langlopende 
beleggingen'&gt;&lt;option value='0320' &gt;0320  Strategische langlopende 
beleggingen&lt;/option&gt;&lt;/optgroup&gt;&lt;optgroup label='Verstrekte langlopende leningen 
(hypotheek ed)'&gt;&lt;option value='0330' &gt;0330  Verstrekte langlopende leningen (hypotheek
 ed)&lt;/option&gt;&lt;/optgroup&gt;&lt;optgroup label='Overige financiële 
bezittingen'&gt;&lt;option value='0340' &gt;0340  Overige financiële bezittingen&lt;/option&gt;&lt;/optgroup&gt;&lt;optgroup label='Voorraad'&gt;&lt;option 
          

          
                    

如果我从控制器复制 returns 结果 (HTML) 并手动将其粘贴到浏览器,那么它工作正常

您没有展示 HTML 是如何呈现的,因此不清楚具体如何修复它,但正在发生的事情是内容正在被 HTML 编码,您这样做如果您希望浏览器评估 HTML 标签,则不需要。

根据评论编辑:

<div class="fieldContainer fcCombo">
      <label>
              My GL <b>:</b>
     </label>

    ${new CoreParamsHelperTagLib().getGLAccountExpanseBudgetForReconcilationOthersDropDown('formFourGLAccount')}
</div>

没有充分理由创建标签库实例。您应该将标签作为 GSP 标签调用。

您正在从控制器返回硬编码 HTML 作为模型变量。这是一个坏主意,但不是你要问的。如果您真的想这样做,那么您将需要防止数据在您的 GSP 中被 HTML 编码。您可以在 GSP 中使用 raw(your unescaped html code here) 方法作为避免编码的一种方法。