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サポートが必要な場合は、jQueryUIのダイアログボックスを使用してSQLクエリを表示できます。その場合は、に置き換える必要\r\n<br/>あります。ただし、Javaでそれを実行し、jqueryUIダイアログボックスがダイアログボックスのコンテンツとして使用する非表示のdivにクエリを配置することもできます。

于 2012-06-29T12:47:31.980 に答える