2017-09-29 42 views
4

努力嘗試刷新形式<f:ajax render="@form" listener="#{myBean.onSelectItemChange}" />阿賈克斯不是在JSF 2應用

在彈出的消息時遇到錯誤是「emptyResponse:從服務器接收到一個空響應檢查服務器錯誤日誌。 「

在Firefox控制檯,錯誤是「XML解析錯誤:XML或文本聲明不會在實體位置的開始」

相同的代碼工作以及在我的本地環境。我在本地和生產環境中使用Tomcat 9。我只在生產中遇到錯誤。

XHTML頁面與

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:p="http://primefaces.org/ui" xmlns:f="http://java.sun.com/jsf/core" 
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"> 

開始呈現時,該<!DOCTYPE html>在頁面的頂部自動添加。

我也試着在頁面的頂部添加<?xml version="1.0" encoding="UTF-8"?>

編輯: 更具體的錯誤: XML解析錯誤:XML或文本聲明不會在實體位置的開始:http://serverIP:8080/app/myPage 2號線,1列:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html> 

更新:的XHR應答看起來像這樣:

<?xml version='1.0' encoding='UTF-8'?> 
<?xml version='1.0' encoding='UTF-8'?> 
<partial-response> 
... 
</partial-response> 

第一行重複兩次

順便說一句,該應用程序在我的開發環境中正常工作。我在開發(Windows)和生產(Ubuntu)計算機上使用Tomcat9。

+0

@mstfdz是正確的重複「根本原因分析」的相關性:**在代碼'<?xml version =「1.0」encoding =「UTF-8」?>''中沒有** _double quotes_? – Dubois

+2

@Dubois:對不起,這完全是無稽之談。自己檢查[XML規範](https://www.w3.org/TR/REC-xml/)。 – BalusC

+0

題外話:不要混合jsf 2.2和pre-2。2個命名空間(或者它可能是主題) – Kukeltje

回答

3

如果客戶端登錄此錯誤,服務器端XHTML不是責備或僅間接。看看browswer開發人員工具中的真實反應將顯示真正的原因。

當你這樣做後,很明顯,有一個'重複'序言。在標題(或在谷歌搜索)中使用這個將很有可能指向在Stackoverflow中的現有Q/A,並有效地使這個Q/A重複它:Ajax update has no effect, Firefox errors: XML or text declaration not at start of entity

我仍然張貼此作爲答案有兩個原因:

  • 向人展示
  • 它不能被標記爲因爲它賞金
-2

嘗試使用「檢查元素」,然後將呈現值這個ID
找到您形式的絕對ID在瀏覽器,你將有這樣的事情:

<f:ajax render="element:element1" listener="#{myBean.onSelectItemChange}"></f:ajax> 
+0

謹慎闡述你爲什麼認爲這是必要的? – Kukeltje

+2

謝謝@AyoubM,嘗試過但它仍然無法正常工作 – justasd