0

これは、送信後に一部の文字 (「żźć」など) が HTML エンティティ (「żźć」) として表示されることを除いて、文字セットの検証に関する質問に似ています。奇妙なのは、「&」を「&」として保存するようなものです。

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>

編集: 明確化として - と のようなものを eg に置き換えることが#{i18n.msg('_Save')}できます。Save#{applicationConfiguration.nameValidationPattern}[^0-9]

4

1 に答える 1

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="false" または ajax="true" を使用すると機能します。

図に行きます。

編集:実際には上記CharacterEncodingFilter from Corrupted characters redisplayed in input after submit formでした。

于 2012-07-17T17:04:40.280 に答える