2013-06-05 4 views
0

기본적으로 제 문제는 일부 문자에 액센트가있는 단어가 들어있는 String의 ArrayList가 있다는 것입니다. 이 ArrayList의 값을 xhtml의 드롭 다운 메뉴로 표시하면 악센트와 모든 값이 올바르게 표시되지만 내가 선택한 문자열을 제출하려고하면이 오류가 발생합니다. 유효성 검사 오류 : 값이 잘못되었습니다.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

의 코드를 추가하십시오 참조하십시오. 차이점은 하나의 selectonemenu 일뿐만 아니라 그 중 일부입니다. 당신의 도움을 주셔서 감사합니다. – user2399580

답변

1

제출 현재 요청이 아약스 요청하는 경우, 그것은 확인하고 있습니다 : 요청으로, 여기에 코드입니다. 요청 헤더 대신 요청 매개 변수가이를 식별합니다. JSF 뷰가 복원되기 전에 검색되는 요청 매개 변수는 JSF 자체 기본 인코딩 (UTF-8) 대신 서버의 기본 문자 인코딩 (ISO-8859-1)을 사용하여 구문 분석됩니다. UTF-8> 설정의 ServletRequest #의 setCharacterEncoding() -

:

는 해결할 수 있습니다. 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). 당신이 중복을 발견하면, 다른 사람의 단어를 복제하는 것이 아니라 복제로 가까운 것에 투표하십시오. – BalusC

관련 문제