2014-02-24 35 views
1

我爲Java,Jquery和Javascript編寫了Liferay的portlet。來自userprofile的Liferay語言

我試圖讓正在使用我的portlet中userprofil的語言。

我已經得到了uuid,可以使用它。

如果我試圖讓相同的語言,方式,我收到

我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); 
    } 
} 

正如你可以看到我試着用三種不同的方法來獲取用戶語言。

我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()我至少也得空的對象,而不是。使用.toString()再次返回空值。

如何獲取用戶配置文件當前使用的語言?

+0

您是否嘗試打印user.getLocale()? –

+0

哇哇它只是現在工作後,我完全刪除它從服務器,並readded它。我現在收到了預期的「en_GB」。我會進一步測試,然後關閉我的問題。感謝您的幫助! PS:我將getlocale打印到textarea(這發生在我的debug()方法中) – Wandang

回答

0

該代碼是正確的。我只需要從服務器上刪除portlet並讀取它。這可能是因爲Java不會正確執行。 (因此,我的languagevar返回null)

現在一切都按預期工作。