我正在GlassFish v3.1.2上运行JSF-Web应用程序
如果我在本地测试它一切正常。现在我只更改了数据源,我得到了一些奇怪的好处:
例如,我有一个命令按钮,它调用某些操作来从数据库接收数据,我想在同一页面的数据表中显示这些数据。 使用我的本地数据库,这可以正常工作,但如果我使用其他数据库(在本地Intranet中的其他服务器上运行),操作将被触发(我有用一些System.out检查了这个但是我的数据表的ajax-update不起作用。如果我在点击我的ajax按钮后重新加载页面,则显示正确的数据,如果我使用非-ajax按钮。
我甚至不知道我应该寻找什么......任何想法?
我正在使用
如果您需要更多信息,请与我们联系。
提前致谢,Fant
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中看到) 甚至我希望在我的dataTable中显示的List的Getter方法在发送htpp-response之前被调用,所以我认为响应本身一切都很好。但是我想要重新呈现的dataTable仍然显示旧数据。
答案 0 :(得分:1)
但我的数据表的ajax-update不起作用
这很可能是由XML语法错误引起的。 ajax更新涉及从服务器检索XML响应,解析它并在HTML DOM树中查找要更新的元素并用XML响应中包含的新HTML替换其内容的步骤。使用webbrowser的内置(Chrome / IE9)或第三方(Firebug)webdeveloper工具集,您可以跟踪HTTP流量并完整地检查HTTP响应,还可以使用断点调试JavaScript代码。这应该为您提供有关问题原因的线索。
如果XML响应中生成的HTML代码完全相同(这是一个公平的假设,只要在更改数据源时没有更改webapp的代码),那么这只能由于从DB获得的数据。显然,数据源的变化还涉及物理数据库服务器的变化,从而提供了一些不同的数据。
基于对该问题的评论,根本原因是来自另一个DB的NUL
character直接来自XML响应,导致webbrowser的XML解析器因为它是非法字符而窒息在XML中。 The XML specification仅指定以下字符为有效字符:
2.2字符
...
字符范围
Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] /* any Unicode character, excluding the surrogate | [#x10000-#x10FFFF] blocks, FFFE, and FFFF. */
#x0
(NUL
字符)不在其中。
您应该已经注意到webbrowser的webdeveloper工具集的控制台中存在XML解析错误。