Браузер не может правильно разобрать HTML - Grails 2 - PullRequest
0 голосов
/ 06 августа 2020

Я генерирую HTML из контроллера (Backend), но браузер не может правильно проанализировать это 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>

проблема:

enter image description here

Generated HTML looks like:

введите описание изображения здесь

Когда я открываю этот 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 
          

          
                    

Если копировать, возвращает результат (HTML) с контроллера и пропустите его в браузере вручную, тогда все будет нормально

1 Ответ

0 голосов
/ 06 августа 2020

Вы не показали, как рендерится этот HTML, поэтому неясно, как конкретно это исправить, но происходит то, что контент кодируется HTML, чего вы не хотите, если хотите браузер для оценки тегов HTML.

РЕДАКТИРОВАТЬ на основе комментария:

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

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

Нет веских причин для создания экземпляра taglib. Вы должны вызвать этот тег как тег GSP.

Вы возвращаете жестко запрограммированный HTML из вашего контроллера в качестве переменной модели. Это плохая идея, но не то, о чем вы спрашиваете. Если вы действительно хотите это сделать, вам нужно будет предотвратить кодирование данных HTML в вашем GSP. Вы можете использовать метод raw(your unescaped html code here) в своем GSP как один из способов избежать кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...