2012-10-03 36 views
5

Tôi đang cố gắng lấy các hằng số (ConstantsWithLookup) được lưu trữ ở phía máy khách ở phía máy chủ của tôi, nhưng nó không thể tìm ra cách thực hiện nó. Tôi có giao diện hằng số và các thuộc tính hằng số trong cùng một thư mục.GWT: Nhận các hằng số ở phía máy chủ

Tôi đã thử các mẹo về các chủ đề tương tự khác không thành công.

Tôi đã thử Hermes, gwt-i18n-server, gwt-dmesg, GTWI18N, sử dụng ResourceBundle, cố gắng lấy các thuộc tính tệp nguồn.

Đối với hai đầu tiên, có vẻ như lý do chính là sự hỗ trợ lỗi thời cho phiên bản GWT mới nhất. Đối với ResourceBundle, nó không thể tìm thấy tệp thuộc tính vì lúc triển khai, không có tệp thuộc tính, chỉ là một lớp Constants.class.

Tôi đang cố gắng tránh thay đổi tệp thuộc tính của mình sang một vị trí khác (như/WEB-INF/hằng số).

Trả lời

9

Tôi đang sử dụng Hermes với GWT 2.5.0.rc1 và hoạt động tốt. Cách sử dụng:

  • đặt hermes-1.2.0.jar vào chiến tranh/WEB-INF/lib
  • Sau đó trên máy chủ bên ghi cái gì đó như
MyConstantsWithLookup my = Hermes.get(MyConstantsWithLookup.class, "de"); 
String string = my.getString(key); 
  • Một thuộc tính tập tin MyConstantsWithLookup.propertiesphải tồn tại trong cùng một gói với MyConstantsWithLookup.java, ngay cả khi tệp thuộc tính đó trống (có thể là trường hợp nếu bạn đang sử dụng @DefaultStringValue, v.v.)
  • Đồng thời thêm MyConstantsWithLookup_de.properties v.v.
  • Đảm bảo rằng các tệp thuộc tính này được sao chép bên cạnh lớp học khi biên dịch. Javac không làm điều đó, vì vậy nó phải được thực hiện trong một bước xây dựng bổ sung (Eclipse thường tự động thực hiện điều này, nhưng nó sẽ không tự xảy ra khi bạn xây dựng ví dụ với Ant)
  • Nhiều thiết lập xây dựng sẽ bỏ qua java và các tệp thuộc tính từ gói "client" khi biên dịch phía máy chủ. Trong trường hợp đó, hãy đặt các tệp hằng số của bạn trong gói "được chia sẻ" (nếu bạn có).
+0

Cảm ơn phản hồi của bạn. Tôi quản lý để sao chép các tập tin thông qua lệnh sao chép trong tập tin build.xml của tôi. Tất cả mọi thứ hoạt động tốt nhưng khi nó cố gắng để có được chuỗi tôi nhận được lỗi: GWT.create() chỉ có thể sử dụng trong mã máy khách! Nó không thể được gọi, ví dụ, từ mã máy chủ. Tui bỏ lỡ điều gì vậy? –

+1

Ở phía máy chủ, bạn phải sử dụng 'Hermes.get (MyConstantsWithLookup.class, myLanguageCode)' ** thay vì ** của GWT.create (MyConstantsWithLookup.class). –

+0

Vâng, đó là những gì tôi đã làm và bằng cách nào đó tôi tiếp tục nhận được lỗi đó. Tôi có phải đặt một cái gì đó trong lớp EntryPoint của tôi và mô-đun xml như trong gwt-i18n-server? –

Các vấn đề liên quan