編輯:tl; dr:當保存變音器時,它們被破壞(變成Ã)。我現在意識到,我的問題的其餘部分與這個問題沒有任何關係。Primefaces更新銷燬Umlauts
。
我正在通過JBoss,Hibernate,Infinispan Cache,derby,Maven和Primefaces構建一個webapp。
我顯示一個從數據庫中獲取數據的頁面,該數據庫中有正確的數據(帶有元音變音)。它正確顯示在 <p:dataTable id="dt1" var="as" value="#{aSBean.elementList}" ...>
當從表中選擇一個條目時彈出一個對話框。對話框代碼的主要部分是
<p:dialog header="AS Detail" widgetVar="asDialog" resizable="false" id="asDlg"
showEffect="fade" hideEffect="fade" modal="true" styleClass="detailDialog" >
<h:panelGrid id="display" >
<h:outputText value="Bemerkung" />
<h:inputText value="#{aSBean.selectedElement.bemerkungTxt}" />
<h:outputText value="Bearbeiter" />
<h:outputText value="#{fehlerBean.selectedElement.bearbeiterNr}" />
</h:panelGrid>
<h:panelGrid id="diaBtnDisplay">
<p:commandButton value="Speichern" update=":form1:dt1" id="save" validateClient="true" actionListener="#{aSBean.save}"/>
<p:commandButton value="Abbrechen" id="cancel">
<f:ajax event="click" onevent="asDlg.hide()" />
</p:commandButton>
</h:panelGrid>
</p:dialog>
現在,竟然沒有在Abbrechen,命令按鈕的更新屬性,但仍當我按下這個按鈕數據表得到更新。如果我通過右上角的X離開對話框,則不會。
但是當我按下Abbrechen時,數據表得到更新,我的ä變成ä。但它只會對所選元素這樣做。這裏是我的支持大豆代碼片段:
public Arbeitsschluessel selectedElement = new Arbeitsschluessel();
public Arbeitsschluessel newElement = new Arbeitsschluessel();
public Arbeitsschluessel getSelectedElement() {
return selectedElement;
}
public void setSelectedElement(Arbeitsschluessel selectedValue) {
if (selectedValue != null) {
this.selectedElement = selectedValue;
}
}
public List<Arbeitsschluessel> getElementList() {
return elementList;
}
所以一定沒什麼特別的。我的HTML頁面開始於<?xml version="1.0" encoding="UTF-8"?>
,我也有以下內容<meta http-equiv="content-type" content="text/html; charset=utf-8" />
我按了Abbrechen按鈕後調試了更新過程,並且對於我的第n個元素,as var的內容是錯誤的。每次調用堆棧看起來都是一樣的,所以我不能說在什麼時候這個值會被破壞。
如果我通過一個按鈕(dao.findAll從數據庫)重新加載數據表,除了當我將一個錯誤的值保存到數據庫中時,所有內容都會再次正確顯示。所以並不是數據庫值已損壞。任何幫助感謝!
編輯:代碼在打開的對話框:
<p:commandButton id="selectButton" update=":form1:display" oncomplete="PF('asDialog').show()" icon="" title="View">
<f:setPropertyActionListener value="#{as}" target="#{aSBean.selectedElement}" />
</p:commandButton>
對於它的價值,我觀察了相同的變音破損在postgres數據庫上使用JSF-2.2和Richfaces(這裏沒有Primefaces)。我懷疑JSF/Wildfly的問題。 – mabi
你是對的,當你沒有設置任何'行動'時'oncomplete'不起作用。在commandButton上使用'process =「@ this」'並使用'onclick =「asDlg.hide()」'而不是f:ajax。請在您打開對話框的位置發佈代碼。 – user1983983
驗證:你在使用Weld-2嗎?我已經指出[這個FAQ條目](http://weld.cdi-spec.org/documentation/#3)來解釋變音人爲什麼會被損壞。 – mabi