我在Java,Jquery和Javascript中为Liferay编写了一个portlet。
我正在尝试获取正在使用我的portlet的userprofil的语言。
我已经拿到了uuid,可以使用它。
如果我尝试以与 null 相同的方式获取语言。
我的JavaClass:
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。
如何获取userprofile的当前使用语言?
答案 0 :(得分:0)
代码是正确的。我只需要从服务器中删除portlet并读取它。这可能是因为Java不会正确执行。 (因此我的languagevar返回null)
现在一切都按预期工作了。