[英]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.