2012-07-17 189 views
0

這類似於question about charset validation不同之處在於某些字符(例如, 「ż ź ć 」)被示出爲HTML實體(「 ż ź ć」)之後提交。奇怪的是像「&」保存爲「&」。JSF請求範圍形式

我已經在Tomcat端嘗試過Spring的CharacterEncodingFilter和Connector,但這似乎沒有任何幫助。數據庫編碼似乎不是一個問題,因爲我的表單在與AJAX請求和會話bean一起使用時(與正常的提交和請求範圍相反),工作得很好。

這裏是我的表格的一部分:

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:f="http://java.sun.com/jsf/core" 
     xmlns:p="http://primefaces.org/ui" 
     xmlns:ui="http://java.sun.com/jsf/facelets" 
     > 
    <h:body> 
    <ui:composition template="/tpls/main-layout.xhtml"> 
    <ui:define name="content"> 
    <h:form> 
    ... 
    <p:commandButton value="#{i18n.msg('_Save')}" 
     action="view" actionListener="#{readerController.save}" ajax="false" /> 
    ... 
    <p:panelGrid> 
     <p:row> 
     <p:column><h:outputLabel for="lastName" value="#{i18n.msg('Reader.lastName')}" /></p:column> 
     <p:column><p:inputText id="lastName" value="#{readerController.currentReader.lastName}" required="true"> 
     <p:ajax update="msg-lastName" event="change" /> 
     <f:validateRegex pattern="#{applicationConfiguration.nameValidationPattern}" /> 
     <f:validateLength maximum="50" /> 
     </p:inputText></p:column> 
     <p:column><p:message for="lastName" id="msg-lastName" /></p:column> 
     </p:row> 
     ... 
    </p:panelGrid> 
    </h:form> 
    </ui:define> 
    </ui:composition> 
</h:body> 
</html> 

編輯:正如澄清 - 您可以替換之類的東西#{i18n.msg('_Save')}Save#{applicationConfiguration.nameValidationPattern}與例如[^0-9]

+0

您是否嘗試過使用在? – 2012-07-17 14:07:52

+0

是的,我以前曾嘗試過'f:view'。不幸的是他們都沒有幫助。 – Nux 2012-07-17 14:38:29

+0

當然不會有幫助,HTTP HTTP請求會忽略meta http-equiv頭。 f:view編碼僅控制默認爲UTF-8的響應編碼。 – BalusC 2012-07-17 14:43:30

回答

0

完全不可思議。

我用這個去我編輯觀點:

<p:commandButton action="#{readerController.edit(list.id)}" title="#{i18n.msg('_Edit')}" icon="ui-icon-gear" /> 

這遞交:

<p:commandButton ajax="false" value="#{i18n.msg('_Save')}" action="view" actionListener="#{readerController.save}" /> 

和編碼不工作的權利。

使用此去編輯觀點:

<p:commandButton ajax="false" action="#{readerController.edit(list.id)}" title="#{i18n.msg('_Edit')}" icon="ui-icon-gear" /> 

而同樣的提交和編碼工作罰款... ...要使用AJAX兩端=「假」或者阿賈克斯=「真」,更確切地說工作。

去圖。

編輯:其實這是上述Corrupted characters redisplayed in inputs after submitting form CharacterEncodingFilter。