Un mic exemplu in care voi prezenta cum sa schimbi locale-ul la o aplicatie JSF. Mai exact Locale inseamna asta, sau pe wikipedia. Am cautat mult pe net pana sa dau de un exemplu functional (sunt multe exemplu care mie nu mi-au mers). exemplul asta e simplu. Mai intai terbuie declarat in faces-config.xml faptul ca vrei sa folosesti locale, apoi folosesti variabila care retine mesajele particularizate in paginile jsp, care este vazut ca un bean, desi e resursa. Pentru a schimba textul in mod dinamic am facut o clasa, care are nite metode cu ajutorul carora schimb variabila locale din aplicatie.
Si acum sursele…
Am un pachet locale si o clasa si niste fisiere de proprietati care contin mesajele:
Am oferit suport doar pt engleza si romana, dar se poat adauga foarte usor cate traduceri vreti.
In faces-config.xml am definit locale asa:
<application> <!-- in aplicatie declar configuratia pt locale--> <locale-config> <default-locale>ro</default-locale> <supported-locale>ro</supported-locale> <supported-locale>en</supported-locale> </locale-config> <resource-bundle> <!-- setez numele de baza pt fisiere de proprietati a se observa ca denumirea se opreste la Message _ro si _en vor fi adaugate de catre aplicatie--> <base-name>locale.Messages</base-name> <!-- variabila la care se va face referire pt mesaj--> <var>msg</var> </resource-bundle> </application> <!-- declararea manage-beanului pentru actiunile de schimbare a locale-ului --> <managed-bean> <managed-bean-name>locale</managed-bean-name> <managed-bean-class>locale.Local</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> </managed-bean>
import java.util.Locale;
public class Local {
private Locale locale;
public Locale getLocale(){
return locale;
}
public String setLocaleRO(){
locale = new Locale(“ro”);
return “”;
}
public String setLocaleEN(){
locale = Locale.ENGLISH;
return “”;
}
}
Si acum partea din jsp care apeleaza metodele din manage-bean pt a schimba valorile:
<h:form>
<h:commandButton value=”ro” action=”#{locale.setLocaleRO}” />
<h:commandButton value=”en” action=”#{locale.setLocaleEN}” />
</h:form>
In paginile jsp trebuie sa adaugati in atributul locale in tagul view, cam asa:
<f:view locale=”#{locale.locale}”>
<!– toate tagurile jsf –>
</f:view>
Si cam asta e tot.
Spor la treaba in continuare.