2012-03-29 17 views
9

Czy istnieje narzędzie, które skompiluje plik Java .properties do klasy, której mogę użyć w aplikacji Java EE (tomcat)? Podobny do androida, w którym wtyczka eclipse generuje statyczną klasę R.strings.Java: Lokalizacja ciągów statycznych

znalazłem ten artykuł:

http://www.techhui.com/profiles/blogs/localization-in-gwt-using

Ale to zależy od GWT. Każda pomoc doceniona.

+0

Czy możesz wyjaśnić trochę. Masz na myśli klasę zawierającą stałe (jak enum) lub tylko właściciela nieruchomości? – questzen

+0

Ten wpis wygląda całkiem podobnie do tego, o co pytasz: http://stackoverflow.com/questions/1578026/java-properties-files-as-strongly-typed-classes –

Odpowiedz

4

Nigdy nie słyszałem o takim narzędziu. GWT ma świetną technikę odroczonego wiązania, ale nie jest to rzecz, której szukasz. Myślę jednak, że możliwe jest wdrożenie podstawowego generatora kodu dla takich zadań.

Ale odpowiedź na twoje pytanie brzmi: o ile wiem, nie ma.

+0

+1 do generowania kodu za pomocą małej aplikacji java, która można automatycznie wywoływać z zadania ant, które można dodać jako automatycznie wywoływany program budujący w środowisku Eclipse. – jabal

0

Co z zasobem ResourceBundle?

// refers to "src/config.properties" 
ResourceBundle config = ResourceBundle.getBundle("config"); 
String property1 = config.getString("property1"); 
+1

Podobnie jak w przypadku innej niedawnej odpowiedzi na to pytanie, nie odpowiada na to pytanie. Opisałeś to, jak to zwykle się robi. Ale w Androidzie otrzymujesz wygenerowaną klasę ze wszystkimi zasobami w czasie kompilacji (R.id). Jeśli właściwość 1 nie jest zdefiniowana, uzyska się tutaj wyjątek runtimeexception. Jeśli nie jest zdefiniowany w Androidzie, otrzymasz błąd czasu kompilacji. – jontro

0

myślę można napisać bardzo prosty gramatyki dla właściwości plików przy użyciu ANTLR w zwyczaju plugin maven (lub Ant zadania), które po prostu generuje źródło Java przed etapem kompilacji.

0

Co powiesz na przechowywanie swoich właściwości w pliku JSON. Obiekt JSON przechowywany w pliku powinien być odwzorowany na klasę Java, a program odwzorowujący Jacksona musi deserializować. W przypadku Jacksona możesz wymusić, że wszystkie pola muszą mieć wartość inną niż null przy deserializacji. Możesz również użyć GSON i napisać niestandardowy deserializator, który przeprowadza kontrole tak ściśle, jak chcesz. Przykład - możesz wymusić brak wartości null wraz z niepuste dla ciągów.

0

nie jest dokładnie tym, o co prosiłeś, ale może być pomocna.

Mimo że nie generuje klas Java z .properties, użycie enums jako kluczy wiadomości jest nadal lepsze niż łańcuchy, ponieważ otrzymujesz pomoc od kompilatora.

Deklaracja wyliczenia, powiązanie z .properties z adnotacją i użycie wartości wyliczeniowych w wyszukiwaniu wiadomości. Jednak jeszcze tego nie próbowałem. Zobacz manual.

1

Do internacjonalizacji aplikacji zaimplementowałem Message Compiler, który tworzy pliki pakunku zasobów i stałe definicje jako wyliczenia Java lub statyczne końcowe ciągi dla kluczy z jednego pliku źródłowego. Stałe mogą być używane w kodzie źródłowym Java, co jest znacznie bezpieczniejszym sposobem niż używanie zwykłych ciągów znaków. W takim przypadku pojawia się również błąd czasu kompilacji, gdy używana jest stała klucza, która nie istnieje. Kompilator wiadomości może być używany nie tylko w Javie. Tworzy również pliki zasobów i stałe dla Objective-C lub Swift i może być rozszerzony na inne środowiska programistyczne.

Powiązane problemy