如何将值从displaytag传递到新窗口并显示它?

时间:2012-06-29 11:39:49

标签: jsp struts displaytag

我试过了

<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查询。

我想在点击链接时在警告或新窗口中显示该查询。请指导我这个

1 个答案:

答案 0 :(得分:1)

首先,您需要JavaScript-escape查询。实际上,如果您查询是

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的dialog box来显示您的SQL查询。如果您这样做,则需要将\r\n替换为<br/>。但您可以在Java中执行此操作,并将查询放在隐藏的div中,jquery UI对话框将将其用作其对话框的内容。