liferay - Почему метод не вызывается в JSP? - PullRequest
0 голосов
/ 27 октября 2019

Я пишу портлет MVC для отображения списка пользователей, которые находятся на портале liferay
с использованием liferay 7, интеллектуальная идея Ultimate 2019, с плагином liferay

это мой класс портлетов

 @Component(
    immediate = true,
    property = {
        "com.liferay.portlet.display-category= My Liferay project",
        "com.liferay.portlet.header-portlet-css=/css/main.css",
        "com.liferay.portlet.instanceable=true",
        "javax.portlet.display-name=My portlet",
        "javax.portlet.init-param.template-path=/",
        "javax.portlet.init-param.view-template=/view.jsp",
        "javax.portlet.name=" + TasksPortletKeys.TASKS,
        "javax.portlet.resource-bundle=content.Language",
        "javax.portlet.security-role-ref=power-user,user"
    },
    service = Portlet.class
)
    public class TasksPortlet extends MVCPortlet {
    @SuppressWarnings("unchecked")
    @ProcessAction(name="getLiveUsers")
    public void getLiveUsers(ActionRequest actionRequest,
                             ActionResponse actionResponse) throws IOException, PortletException {
        try{
            ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
            Class<?> liveUsers = PortalClassLoaderUtil.getClassLoader().loadClass("com.liferay.portal.liveusers.LiveUsers");
            System.out.println(liveUsers);
            Method getSessionUsers = liveUsers.getDeclaredMethod("getSessionUsers",long.class);
            Object map = getSessionUsers.invoke(null,themeDisplay.getCompanyId());
            Map<String, UserTracker> sessionUsers = null;
            sessionUsers=(ConcurrentHashMap<String, UserTracker>)map;
            System.out.println(sessionUsers);
            actionRequest.setAttribute("portalLiveUsers", sessionUsers);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

и мой view.jsp

    <portlet:defineObjects />
<liferay-theme:defineObjects />
<portlet:actionURL var="getLiveUsers" windowState="normal" name="getLiveUsers">
</portlet:actionURL>
<h2>Portal Live Users/Portal Logged in Users</h2>
<form action="<%=getLiveUsers%>" name="getLiveUsersForm" method="POST">
    <input type="submit" name="GetPortalLiveUsers" id="GetPortalLiveUsers" value="Get Portal Live Users"/>
</form>

<%
    if(renderRequest.getAttribute("portalLiveUsers")!=null){
        Map<String, UserTracker> sessionUsers = null;
        sessionUsers=(ConcurrentHashMap<String, UserTracker>)renderRequest.getAttribute("portalLiveUsers");
%>
<table border="1">
    <tr>
        <th>Company Id</th>
        <th>Email Address</th>
        <th>FullName</th>
        <th>User Agent</th>
        <th>Remote Host</th>
        <th>Remote Address</th>
        <th>Session Id</th>
    </tr>
    <%

        for (Map.Entry<String, UserTracker> entry : sessionUsers.entrySet())
        {
            UserTracker liveUserTracker=entry.getValue();%>
    <tr>
        <td><%=liveUserTracker.getCompanyId()%></td>
        <td><%=liveUserTracker.getEmailAddress()%></td>
        <td><%=liveUserTracker.getFullName()%></td>
        <td><%=liveUserTracker.getUserAgent()%></td>
        <td><%=liveUserTracker.getRemoteHost()%></td>
        <td><%=liveUserTracker.getRemoteAddr()%></td>
        <td><%=liveUserTracker.getSessionId()%></td>
    </tr>

    <%}%>
</table>
<%}%>

почему метод getLiveUsers не вызывается в jsp?
может, есть хороший пример создания такого портлета?
помогите мнезнающие люди!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...