0

プロジェクトで jQGrid の最新バージョンを使用しています。以下は、構成した完全な構成です。

jQuery("#list").jqGrid( {
        url : 'Link.do?method=findAllBrand',
        mtype : 'GET',
        height : 350,
        datatype : "xml",
        colNames : [ 'Name' ],
        colModel : [ {
            name : 'name',
            index : 'name',
            width : 620
        } ],
        rowNum : 10,
        rowList : [ 10, 20, 30 ],
        sortname : 'id',
        sortorder : "desc",
        viewrecords : true,
        multiselect : true,
        imgpath : 'themes/base/images',
        caption : "Brand (s) Summary Grid",
        pager : $('#pager'),
        cache : false,
        onSelectRow : function(id) {

        }
    });

サーバーから次のデータを xml 形式で取得しています。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><rows><page>1</page><total>1</total><records>4</records><row id="BRD00003"><cell>Blanco</cell></row><row id="BRD00001"><cell>Bosch</cell></row><row id="BRD00004"><cell>Chef</cell></row><row id="BRD00002"><cell>F&P</cell></row></rows>

xml で特別な意味を持つ & char が含まれているため、最後の行の最後のセルで問題が発生していることがわかります。ただし、以下の関数を使用してApache commons langライブラリを使用してxml全体のシーケンスをエスケープしました。

toXml = StringEscapeUtils.escapeXml(toXml);

結果の文字列は

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;yes&quot;?&gt;&lt;rows&gt;&lt;page&gt;1&lt;/page&gt;&lt;total&gt;1&lt;/total&gt;&lt;records&gt;4&lt;/records&gt;&lt;row id=&quot;BRD00003&quot;&gt;&lt;cell&gt;Blanco&lt;/cell&gt;&lt;/row&gt;&lt;row id=&quot;BRD00001&quot;&gt;&lt;cell&gt;Bosch&lt;/cell&gt;&lt;/row&gt;&lt;row id=&quot;BRD00004&quot;&gt;&lt;cell&gt;Chef&lt;/cell&gt;&lt;/row&gt;&lt;row id=&quot;BRD00002&quot;&gt;&lt;cell&gt;F&amp;P&lt;/cell&gt;&lt;/row&gt;&lt;/rows&gt;

それでも、Mozilla firefox の最新バージョンと chrome 、つまり 7,8 で同じエラーが発生しました。

グリッド内のこの特殊文字を表示する必要があるのですが、どうすればこの問題を解決できますか?

ありがとうミヒル・パレク

4

2 に答える 2

0

可能な限り、XML ではなく JSON 形式を使用することをお勧めします。

XML を使用する必要があり、XML に一般的な値を配置する必要がある場合は、CDATA コンストラクト ( <![CDATA["some common text"]]>) を使用する必要があります。

さらにautoencode: true、標準の jqGrid オプションとして使用することをお勧めします。この場合、jqGrid セルに任意のテキストを配置できます。jqGrid は、HTML にとって特別な意味を持つすべての文字のエンコードを行います。

于 2012-11-21T12:25:25.883 に答える
0

サーバー側からxmlを生成しています。

次に、各テキスト ノードと各属性値を個別にエスケープします。すべて単純です。

于 2012-11-21T12:16:58.107 に答える