1

GlassFishv3.1.2でJSF-Webアプリケーションを実行しています

ローカルでテストすると、すべて正常に動作します。今、私はデータソースを変更するだけで、奇妙な振る舞いをします:

たとえば、データベースからデータを受信するためのアクションを呼び出すコマンドボタンがあり、このデータを同じページのデータテーブルに表示したいとします。 私のローカルデータベースではこれは正常に機能しますが、他のデータベース(ローカルイントラネットの別のサーバーで実行されている)を使用すると、アクションが実行されます(これをいくつかのSystem.outで確認しました)が、ajax-update ofデータテーブルが機能しません。ajaxボタンをクリックした後にページをリロードすると、非ajaxボタンを使用した場合でも、正しいデータが表示されます。

何を探すべきかわからない..何かアイデアはありますか?


私は使用しています

  • Primfaces 3.4.2
  • JSF 2(クロサギ)
  • ローカルデータベースはOracle10gXEです
  • サーバーデータベースはOracle11gです
  • jdbc-driverは、oracle-websiteの最新のojdbc6.jarです。

さらに詳しい情報が必要な場合はお知らせください。

よろしくお願いします、ファント


Http-response-header:
HTTP/1.1 200 OK
X-Powered-By: Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2 Java/Oracle Corporation/1.7), JSF/2.0
Server: GlassFish Server Open Source Edition 3.1.2
Cache-Control: no-cache
Content-Type: text/xml;charset=UTF-8
Content-Length: 5610
Date: Sat, 08 Dec 2012 02:05:08 GMT

また、フィードバックを提供するためにPhaseListenerを作成しようとしましたが、これもあまり役に立ちませんでした。すべてのフェーズが正常に終了し、アクションが実行された後、応答がクライアントに送信されます(Firefox-アドオンで確認できるように、クライアントは応答を受信します)表示したいリストのGetterメソッドでさえ私のdataTableは、htpp-responseが送信される前に呼び出されるので、応答自体にはすべて問題がないと思います。しかし、再レンダリングしたいdataTableには、まだ古いデータが表示されています。

4

1 に答える 1

1

しかし、私のデータテーブルのajax-updateは機能しません

これは、XML構文エラーが原因である可能性があります。ajax更新には、サーバーからXML応答を取得し、それを解析してHTML DOMツリーで更新される要素を見つけ、それらのコンテンツをXML応答に含まれる新しいHTMLに置き換える手順が含まれます。webbrowserの組み込み(Chrome / IE9)またはサードパーティ(Firebug)のwebdeveloperツールセットを使用すると、HTTPトラフィックを追跡し、HTTP応答全体を検査できます。また、ブレークポイントを使用してJavaScriptコードをデバッグすることもできます。これにより、問題の原因に関する手がかりが得られるはずです。

XML応答で生成されたHTMLコードがまったく同じである場合(データソースを変更したときにwebappのコードが変更されない場合、これは公正な仮定です)、それはデータの違いによってのみ発生する可能性があります。 DBから取得。明らかに、データソースの変更には、物理​​データベースサーバーの変更も含まれているため、多少異なるデータが提供されます。

NUL質問へのコメントに基づくと、根本的な原因は、XML応答で終わった他のDBから直接来た文字であることが判明し、XMLの不正な文字であるため、WebブラウザーのXMLパーサーがチョークします。XML仕様では、次の文字のみが有効であると指定されています。

2.2キャラクター

..。

文字範囲

Char   ::=   #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD]  /* any Unicode character, excluding the surrogate 
             | [#x10000-#x10FFFF]                               blocks, FFFE, and FFFF. */

(キャラクター)は#x0そのNUL中にいません。

WebブラウザのWeb開発者ツールセットのコンソールでXML解析エラーに気付いたはずです。

于 2012-12-11T12:11:59.017 に答える