0

我努力了

<display:table name="jobTrackerCol" pagesize="20" sort="list" id="data" requestURI="" class="tablelist">   
            <display:column title="Request Id" sortable="true" ><%-- property="request_id" > --%>   
            <a href=# onClick="popupSmallWindow('${data.query}');">${data.request_id}</a>   
            </display:column>   
</display:table>  

javascript

function popupSmallWindow(query){   
    //window.location="http://www.continue.com";    
    myString = query.replace(/[\r\n]/g, "<br />");    

    alert(myString);   
}

${data.query} 中的值是长 sql 查询。

当我单击链接时,我想在警报或新窗口中显示该查询。请指导我

4

1 回答 1

1

首先,您需要对查询进行 JavaScript 转义。确实,如果您查询的是

select a.id from a where a.name = 'doe'

生成的 HTML 代码将是:

onClick="popupSmallWindow('select a.id from a where a.name = 'doe'');"

这显然会导致问题,因为由于未转义的单引号,JS代码将无效。

您可以使用 apache commons-lang StringEscapeUtils.escapeECMAScript()来做到这一点。

现在,警告框不显示 HTML。因此,如果要在警报框中显示它,则不能转换\r\n为。<br/>保持原样,警报框将很好地显示查询。

如果你想要 HTML 支持,你可以使用 jQuery UI 的对话框来显示你的 SQL 查询。如果这样做,则需要替换\r\n<br/>。但是您可以在 Java 中执行此操作,并将查询放置在 jquery UI 对话框将用作其对话框内容的隐藏 div 中。

于 2012-06-29T12:47:31.980 回答