2013-06-05 32 views
0

所以基本上我的問題是我有一個字符串的ArrayList,它包含一些字母上帶重音符的單詞。 當我得到這個ArrayList的值作爲下拉菜單顯示在xhtml上時,我正確地獲得了重音和所有東西的值,但是,當我嘗試提交我選擇的字符串時,出現此錯誤:Validation錯誤:值無效。使用UTF-8的JSF不能與帶有口音的字母一起使用

xhtml頁面的編碼是這樣的:<?xml version='1.0' encoding='UTF-8' ?>

當我選擇一個沒有重音的詞時,一切都按計劃進行。

我該怎麼做才能解決這個問題?謝謝。

編輯:按照要求,下面的代碼:

<?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:p="http://primefaces.org/ui" 
     xmlns:c="http://java.sun.com/jsp/jstl/core" 
     xmlns:f="http://java.sun.com/jsf/core"> 
    <h:head> 
     <h:outputStylesheet library="css" name="tablestyle.css" /> 
     <h:outputStylesheet library="css" name="pagestyle.css" /> 
     <h:outputScript library="js" name="common.js" /> 
     <h:outputScript library="js" name="jquery-ui-1.10.3.custom.js"/> 
     <h:outputScript library="js" name="jquery-ui-1.10.3.custom.min.js"/> 
     <h:outputScript library="js" name="jquery-1.9.1.js" /> 
    </h:head> 
    <h:body> 
     <div id="menu"> 
      <c:if test="#{SfpExposerBean.dataToRepresent == 'HelpRequest'}" > 
       <h:form id="assistancerequest"> 
        <p:poll interval="10" update="assistancerequest" /> 
        <br/><br/> 
        <h:selectOneMenu value="${SfpExposerBean.entrPlat}" style="width: 100px" > 
         &nbsp;&nbsp;&nbsp; 
         <h:outputText value="Plat origem:" />&nbsp;&nbsp; 
         <c:forEach items="${SfpExposerBean.plats}" var="entrplat"> 
          <f:selectItem itemValue="${entrplat}" /> 
         </c:forEach> 
        </h:selectOneMenu> 
        <h:commandButton value="Ok" action="#{SfpExposerBean.setHelpRequests()}" style="width: 200px" id="submitAssistance" /> 
       </h:form> 
      </c:if> 
     </div> 
     <div id="collapse" onclick="toggle();" /> 
    </h:body> 
</html> 
+0

請添加您的Facelets – psi

+0

這基本上我已經得到了代碼的代碼。不同之處在於,它不僅僅是一個選擇菜單,而是其中的幾個。謝謝你的幫助。 – user2399580

回答

1

提交時,被檢查,如果當前請求是一個Ajax請求。請求參數代替請求頭來標識它。在JSF視圖恢復之前檢索到的請求參數第一次將使用服務器默認字符編碼(ISO-8859-1)而不是JSF自己的默認字符編碼(UTF-8)進行解析。 >設置的ServletRequest#所以setCharacterEncoding()使用UTF-8 -

這可以通過被固定。通過ServletResponse#setCharacterEncoding()設置響應編碼是不必要的,因爲它不會受到這個問題的影響。

@WebFilter("*.xhtml") 
public class CharacterEncodingFilter implements Filter { 
@Override 
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException { 
    request.setCharacterEncoding("UTF-8"); 
    chain.doFilter(request, response); 
    } 
} 

看到Typing Chinese with PrimeFaces' editor component.

+0

[剽竊不讚賞](http://meta.stackexchange.com/questions/160077/users-are-calling-me-a-plagiarist-what-do-i-do)。如果您發現重複,請選擇close作爲副本,而不是copypasting other的單詞。 – BalusC

相關問題