찾다

 >  Q&A  >  본문

요청/뷰 수준별로 선택한 로케일 기억 대신 JSF에서 세션 수준 지역화를 구현하는 방법

<p><code>faces-config.xml</code>:</p> <pre class="brush:php;toolbar:false;"><application> <로케일-설정> <default-locale>ru</default-locale> <supported-locale>ua</supported-locale> </locale-config> </application></pre> <p>빈 액션 메소드에서 현재 뷰의 로케일을 다음과 같이 변경합니다.</p> <pre class="brush:php;toolbar:false;">FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale("ua"));</pre> <p>문제는 <code>ua</code> 로케일이 세션이 아닌 요청/뷰에만 적용된다는 것입니다. 동일한 세션의 다른 요청/뷰는 로케일을 기본 <code>ru</code> 값으로 재설정합니다. </p> <p>세션에 로캘을 어떻게 적용하나요? </p>
P粉360266095P粉360266095541일 전633

모든 응답(2)나는 대답할 것이다

  • P粉662802882

    P粉6628028822023-08-23 10:48:27

    문제는 .properties 파일 이름과도 관련이 있는 것으로 확인됩니다. Java의 로케일 코드(소문자): en_gb 그러나 Netbeans에 의해 자동으로 생성된 로케일은 소문자_대문자입니다. 예: message_en_GB.properties 다음으로 변경하세요: message_en_gb.properties 그러면 제대로 작동할 것입니다. 모든 것을 시도했다면

    회신하다
    0
  • P粉426906369

    P粉4269063692023-08-23 00:27:17

    선택한 로케일을 세션 범위에 저장하고 두 위치에 설정해야 합니다. 한 번은 UIViewRoot#setLocale()立即在更改区域设置后(这将更改当前视图根的区域设置,从而在后续请求中得到反映;如果之后执行重定向,则此部分是不必要的),以及一次在<f:view>locale 속성을 통해(이렇게 하면 후속 요청/보기에서 로케일이 설정/보존됩니다).

    다음은 LocaleBean 모양의 예입니다.

    으아악

    뷰가 어떻게 보여야 하는지에 대한 예는 다음과 같습니다.

    으아악

    이는 #{text}已在faces-config.xml의 구성이 다음과 같다고 가정합니다.

    으아악

    <html lang>은 JSF 기능에는 필수가 아니지만 검색 엔진 설명 페이지에는 필수입니다. 그렇지 않으면 중복된 콘텐츠로 표시될 수 있으며 이는 SEO에 좋지 않습니다.

    참조:

    회신하다
    0
  • 취소회신하다