我已经检查了在 liferay 主题(速度模板)中使用自定义服务或 liferay 服务?
和自定义方法工作正常。但我有一些具体要求。
如果您知道如何将 PortletSession 对象或 RenderRequest 传递给自定义方法,请告诉我。
例如
我试图创建以下界面:
package com.myTool;
import javax.portlet.PortletSession;
import javax.portlet.RenderRequest;
public interface MyTest{
public String getUserCountry(PortletSession portletSession);
public String getUserCountry(RenderRequest request);
}
在实现接口的类中,我有以下方法:
public String getUserCountry(PortletSession portletSession) {
try {
myUtil.setPortletSession(portletSession);
return "Success";
}
catch (Exception e) {
e.printStackTrace();
return "exception-portletSession";
}
};
public String getUserCountry(RenderRequest request) {
try {
myUtil.setPortletSession(request.getPortletSession());
return "Success request";
}
catch (Exception e) {
e.printStackTrace();
return "exception-renderRequest";
}
};
我尝试了以下方法但没有运气:
1)
#set($currentProfileUtil = $utilLocator.findUtil("myportlets-1.0-SNAPSHOT", "com.myTool.MyTest"))
#set($result = $currentProfileUtil.getUserCountry($request.getAttribute("javax.portlet.response")))
$result
2)
#set($currentProfileUtil = $utilLocator.findUtil("myportlets-1.0-SNAPSHOT", "com.myTool.MyTest"))
#set($result = $currentProfileUtil.getUserCountry($request.get("portlet-session")))
$result
3)
#set($currentProfileUtil = $utilLocator.findUtil("myportlets-1.0-SNAPSHOT", "com.myTool.MyTest"))
#set($result = $currentProfileUtil.getUserCountry($request.getSession()))
$result
4)
#set($currentProfileUtil = $utilLocator.findUtil("myportlets-1.0-SNAPSHOT", "com.myTool.MyTest"))
#set($result = $currentProfileUtil.getUserCountry($request.getSession()))
$result
PS请不要说“你为什么需要这个?” - 只需提供有关如何发送 PortletSession 或可以从中检索 PortletSession 的任何对象的任何想法。谢谢