【发布时间】:2014-02-24 11:45:25
【问题描述】:
我用 Java、Jquery 和 Javascript 为 Liferay 编写了一个 portlet。
我正在尝试获取正在使用我的 portlet 的用户配置文件的语言。
我已经获得了 uuid 并且可以使用它。
如果我尝试以与接收 null 相同的方式获取语言。
我的 Java 类:
public class UserId extends MVCPortlet {
public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
ThemeDisplay td =(ThemeDisplay)renderRequest.getAttribute(WebKeys.THEME_DISPLAY);
User user = td.getUser();
/*String userLanguage = td.getLocale().toString();*/
/*String userLanguage = user.getLanguageId();*/
String userLanguage = LanguageUtil.getLanguageId(renderRequest);
String userId = user.getUuid();
renderRequest.setAttribute("myUser", userId);
renderRequest.setAttribute("myUserLang", userLanguage);
super.doView(renderRequest, renderResponse);
}
}
如您所见,我尝试使用三种不同的方法获取 userLanguage。
我的 View.jsp:
<portlet:defineObjects />
<%
String userIdIntern = renderRequest.getRemoteUser();
String userIdExtern = (String) request.getAttribute("myUser");
String userLang = (String) request.getAttribute("myUserLang");
%>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
userId = "<%=userIdExtern%>";
debug(userId);
var testLang = "<%=userLang%>";
debug("testLang obj: "+testLang); // returns null
});
/* more code below */
如果我使用 td.getLocale() 我至少会得到一个对象而不是 null。使用 .toString() 再次返回 null。
如何获取用户配置文件当前使用的语言?
【问题讨论】:
-
您尝试打印 user.getLocale() 吗?
-
哦,哇,在我将它从服务器上完全删除并读取它之后,它现在才起作用。我现在按预期收到“en_GB”。我将进一步测试并关闭我的问题。谢谢你的帮助! PS:我将 getlocale 打印到 textarea (这发生在我的 debug() 方法中)