gpt4 book ai didi

java - Web 应用程序的行为似乎取决于我的数据源?

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:22 25 4
gpt4 key购买 nike

我正在 GlassFish v3.1.2 上运行 JSF-Web 应用程序

如果我在本地测试一切正常。现在我只更改数据源并且我得到一些奇怪的行为:

例如,我有一个命令按钮,它调用一些操作来从数据库接收数据,并且我想在同一页面上的数据表中显示这些数据。对于我的本地数据库,这工作正常,但如果我使用其他数据库(在本地 Intranet 中的不同服务器上运行),该操作将被触发(我已使用某些 System.out 检查过这一点)但我的数据表的 ajax 更新不起作用。如果我在单击 ajax 按钮后重新加载页面,则会显示正确的数据,即使我使用非 ajax 按钮也是如此。

我什至不知道我应该寻找什么..有什么想法吗?

<小时/>

我正在使用

  • Primfaces 3.4.2
  • JSF 2(莫哈拉)
  • 本地数据库为Oracle 10g XE
  • 服务器数据库是Oracle 11g
  • 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-Addon 中看到的那样)甚至我想要在数据表中显示的列表的 Getter 方法也会在发送 htpp 响应之前调用,所以我认为响应本身一切都很好。但我想要重新渲染的数据表仍然显示旧数据。

最佳答案

but the ajax-update of my datatable does not work

这很可能是由 XML 语法错误引起的。 ajax 更新涉及从服务器检索 XML 响应、解析它并在 HTML DOM 树中查找要更新的元素并用包含在 XML 响应中的新 HTML 替换其内容的步骤。使用网络浏览器的内置 (Chrome/IE9) 或第 3 方 (Firebug) Web 开发工具集,您可以跟踪 HTTP 流量并检查整个 HTTP 响应,还可以使用断点调试 JavaScript 代码。这应该可以为您提供有关问题原因的线索。

如果 XML 响应中生成的 HTML 代码完全相同(这是一个公平的假设,前提是当您更改数据源时 webapp 的代码没有更改),那么这只能是由从 DB 获取的数据差异引起的。显然,数据源的变化也涉及物理数据库服务器的变化,从而提供了一些不同的数据。

根据对该问题的评论,根本原因是 NUL character直接来自另一个数据库,最终出现在 XML 响应中,导致 Web 浏览器的 XML 解析器阻塞,因为它是 XML 中的非法字符。 The XML specification仅指定以下字符有效:

2.2 Characters

...

Character Range

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

#x0(NUL 字符)不在其中。

您应该注意到网络浏览器的网络开发人员工具集的控制台中存在 XML 解析错误。

关于java - Web 应用程序的行为似乎取决于我的数据源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13707523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com