使用Javascript中的GSP标签



我正在尝试使用javascript创建一个动态HTML表。我编写了一个小函数来动态地向表中添加行。然而,单个单元格本身应该是gsp标签元素。在下面的例子中,我尝试使用grails-UI插件提供的自动完成标记。即使我将单元格的innerHTML设置为gsp标记,它也不会在页面上呈现。

function addIngredientRow(tableName,element){
var table = document.getElementById(tableName);
var lastRow = table.rows.length;
var row = table.insertRow(lastRow);
var leftCell = row.insertCell(0);
var autoCompleteDiv = document.createElement('div');
leftCell.appendChild(autoCompleteDiv);
autoCompleteDiv.innerHTML= '<gui:autoComplete id="autoCompleteIngredient" resultName="ingredients" labelField="name" idField="id" controller="recipe" 
        action="getIngredientAsJSON" forceSelection="true" 
        useShadow="true" width=60px  queryDelay=0.5   />';
var rightCell = row.insertCell(1);
var autoCompleteDivR = document.createElement('div');
rightCell.appendChild(autoCompleteDivR);
autoCompleteDivR.innerHTML= '<p>test</p>';

}

调用该代码的HTML片段如下:
<tr>
                     <td>
                         <gui:autoComplete
                                id="autoCompleteIngredient"
                                resultName="ingredients"
                                labelField="name"
                                idField="id"
                                controller="recipe"
                                action="getIngredientAsJSON"
                                forceSelection="true"
                                useShadow="true"
                                  width=60px
                                  queryDelay=0.5      
                        />
                     </td>
                     <td>
                         <div onclick="addIngredientRow('createRecipeTable',this)"><img alt="Add Ingredient" src="${resource(dir:'images/icons',file:'Add16.png')}" ></div>
                     </td>
                 </tr>

我已经检查了javascript正在通过放置警报来调用。所有的线路都没问题。我认为问题是通过浏览器解决gsp标签。我如何从javascript调用gsp标签??

GSP页面在服务器上呈现,在浏览器获得html并开始运行Javascript之前很久很久。您需要使用AJAX调用将gsp标记发送回服务器,在那里它可以(希望)呈现为HTML,然后从AJAX响应中获取HTML并将其插入到文档中。

gsp在呈现给浏览器之前被评估。如果你想让javascript使用它们,javascript源代码必须由grails引擎提供/评估。

您可以为js创建一个控制器,并使用gsp将其呈现为grails应用程序中的任何其他页面。

最新更新