来自userprofile的Liferay语言

时间:2014-02-24 11:45:25

标签: liferay portlet

我在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的当前使用语言?

1 个答案:

答案 0 :(得分:0)

代码是正确的。我只需要从服务器中删除portlet并读取它。这可能是因为Java不会正确执行。 (因此我的languagevar返回null)

现在一切都按预期工作了。