簡體   English   中英

操作結果中的請求參數是ISO-8859-1編碼的,而不是UTF-8編碼的

[英]request parameters in action outcome are ISO-8859-1 encoded instead of UTF-8

我在將動作方法的結果編碼為UTF-8時遇到問題。

Glassfish 3.1.2設置為UTF-8: <parameter-encoding default-charset="UTF-8"/>並在瀏覽器中輸入以下UTF-8編碼的url可以在Bean /轉換器中正確地解碼視圖參數。

/sites/foo.xhtml?paramKey=Getr%C3%A4nke - > /sites/foo.xhtml?paramKey=Getränke

Getränke在后備Bean中正確檢索,我的轉換器可以檢索正確的對象。

問題:

在由命令組件調用的bean方法中,視圖參數附加到將要返回的目標view-id上。

public String action()
{
    return "/sites/foo.xhtml?paramKey=Getränke&faces-redirect=true";
}

重定向后將產生一個ISO-8859-1編碼的url而不是UTF-8編碼的url:

/sites/foo.xhtml?paramKey=Getr%E4nke

我錯過了在某個地方定義UTF-8的想法嗎?

還是我必須親自將結果編碼為UTF-8,才能正常工作。 奇怪的是,像h:link這樣的基本鏈接都可以正常工作。

系統:

Glassfish 3.1.2 Mojarra 3.1.23 Primefaces 3.5f Omnifaces:1.6快照

注意:還刪除了PrettyURL//Rewrite以進行測試,以確保這不是原因。

注意:為進行測試,還向過濾器添加了以下內容:

if (request.getCharacterEncoding() == null)
    response.setCharacterEncoding("UTF-8");

我已經在一年多以前確切報告了這個問題: issue 2440 不幸的是,由於它需要更改JSF規范,因此僅將其固定為2.2,而不是2.1。 由於您已經在使用OmniFaces,因此也可以使用其Faces#redirect() 它顯式使用UTF-8對參數進行URL編碼。

public void action() throws IOException {
    Faces.redirect("sites/foo.xhtml?paramKey=%s", "Getränke");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM