저는 백엔드 메시지를 내 앱으로 번역하고 있습니다. ResourceBundle 속성이 선택된 언어에 따라 메시지를 가져 오지 않습니다.
은 그위한 BundleProducer을 썼다 :package util;
import javax.enterprise.inject.Model;
import javax.enterprise.inject.Produces;
import javax.faces.context.FacesContext;
import java.util.PropertyResourceBundle;
@Model
public class BundleProducer{
@Produces
public PropertyResourceBundle getBundle() {
FacesContext facesContext = FacesContext.getCurrentInstance();
return facesContext.getApplication().evaluateExpressionGet(facesContext, "#{msg}", PropertyResourceBundle.class);
}
}
를 주입 :
protected transient @Inject
PropertyResourceBundle msg;
전화 :
FacesMessage m = new FacesMessage(FacesMessage.SEVERITY_ERROR, msg.getString("inactive-user"), "");
fc.addMessage(null, m);
코드는 @RequestScoped
및 @ConversationScoped
콩을 위해 완벽하게 작동합니다; 선택한 언어에 따라 번역 된 속성 메시지가 표시됩니다.
@SessionScoped
또는 @ApplicationScoped
콩에서 msg.getString("some-property")
을 호출하면 메시지가 표시되지만 선택한 앱 (예 : 영어)을 무시하고 기본 앱의 언어 (스페인어)로 표시됩니다.
내가 뭘 잘못하고있어? 감사합니다. .
이 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - [검토 중] (리뷰/저품절 포스트/17996891) – aaron
선택한 언어는 not_ app의 기본값입니다. 나는 당신의 충고에 따라 제작자에게'@ RequestScoped '를 추가했다. 그러나 작동하지 않는 경우 UnproxyableResolutionException이 발생합니다. – Santiago