Cara melaksanakan penyetempatan peringkat sesi dalam JSF dan bukannya setiap peringkat permintaan/lihat hafalan setempat yang dipilih
P粉360266095
2023-08-22 21:30:42
<p><kod>faces-config.xml</code>:</p>
<pre class="brush:php;toolbar:false;"><application>
<locale-config>
<default-locale>ru</default-locale>
<supported-locale>ua</supported-locale>
</locale-config>
</application></pre>
<p>Dalam kaedah tindakan kacang, saya menukar tempat paparan semasa seperti berikut: </p>
<pre class="brush:php;toolbar:false;">FacesContext.getCurrentInstance().getViewRoot().setLocale(new Locale("ua"));</pre>
<p>Masalahnya ialah <kod>ua</code> hanya digunakan pada permintaan/pandangan, bukan sesi. Permintaan/pandangan lain dalam sesi yang sama akan menetapkan semula tempat kepada nilai lalai <code>ru</code> </p>
<p>Bagaimanakah cara saya menggunakan tempattempat pada sesi? </p>
Saya melihat bahawa masalah itu juga berkaitan dengan nama fail .properties. Kod Tempatan Java (huruf kecil) seperti: en_gb Tetapi Tempatan yang dijana secara automatik oleh Netbeans ialah huruf kecil_besar, contohnya: messages_en_GB.properties Tukar kepada: messages_en_gb.properties Maka ia sepatutnya berkesan - jika anda telah mencuba segala-galanya
Anda perlu menyimpan tempat yang dipilih dalam skop sesi dan menetapkannya di dua tempat: sekali melalui atribut
UIViewRoot#setLocale()
立即在更改区域设置后(这将更改当前视图根的区域设置,从而在后续请求中得到反映;如果之后执行重定向,则此部分是不必要的),以及一次在<f:view>
的locale
(ini akan menetapkan/mengekalkan tempat itu pada permintaan/pandangan berikutnya).Berikut ialah contoh bagaimana
LocaleBean
sepatutnya kelihatan:Berikut ialah contoh bagaimana pandangan sepatutnya kelihatan:
Ini mengandaikan bahawa konfigurasi dalam
#{text}
已在faces-config.xml
adalah seperti berikut:Sila ambil perhatian bahawa
<html lang>
tidak diperlukan untuk fungsi JSF, tetapi wajib untuk halaman penjelasan enjin carian. Jika tidak, ia mungkin ditandakan sebagai kandungan pendua, yang tidak baik untuk SEO.Lihat juga: