使用Javascript中的GSP标记

时间:2011-08-09 14:41:56

标签: javascript html jsp grails gsp

我正在尝试使用javascript创建动态HTML表。我写了一个小函数来动态地向表中添加行。然而,单个细胞本身应该是gsp标签元素。在下面的示例中,我尝试使用grails-UI插件提供的autoComplete标记。即使我将单元格的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标签?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

在渲染到浏览器之前评估GSP。如果你想让javascript使用它们,那么jils源必须由grails引擎提供/评估。

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