1

やあ

テンプレートを UTF-8 ページとして定義した場合、それを呼び出すすべてのインクルードにその動作を適用すべきではないでしょうか?

「a ñu is a gnu (this one works)」と出力する単純なテンプレートを作成しました。これは、「ñ」文字を理解して適切に処理できることを意味します。ただし、別のページ (チュパカブラ) を含めるときに、同じ「ñ」文字を含む単語を印刷しようとすると、com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException:invalid byte が発生します。

simple_template.xhtml

<?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:f="http://java.sun.com/jsf/core"      
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      >

    <h:head> 

    </h:head>
    <h:body style="background-color:black;" >
        a ñu is a gnu  (this one works)
        <ui:insert name="contenido"/>
    </h:body>
</html>

chupacabra.xhtml

<ui:composition 
   template="/paginas/comun/simple_template.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"  
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui"
    xmlns:dabit="http://java.sun.com/jsf/composite/components"> 
            <ui:define name="contenido">
<h:form>
    añoo (this one wont work)

    </h:form>
    </ui:define>
    </ui:composition>
4

1 に答える 1

1

Facelets ファイルが間違った文字エンコーディングで保存されています。UTF-8 を使用して保存する必要があります。Eclipse では、 Window > Preferences > General > Workspace > Text File Encodingで設定できます。

ここに画像の説明を入力

それを修正した後、すべてのテンプレートを編集して再保存します。インクルード ファイルまたはマスター テンプレートが 1 つだけ間違ったエンコーディングを使用して保存されている場合でも、すべてが失敗します。

XML プロローグ<?xml ... ?>は不要であることに注意してください。保存された XML ファイルのバージョンとエンコーディングについて、XML パーサー (Facelets の SAX コンパイラー) に通知するだけです。しかし、すでにデフォルトで UTF-8 になっています。それらを安全に取り除くことができます。これは、MSIE ブラウザーに対してもより使いやすいです。

于 2013-02-06T22:08:42.160 に答える