我需要使用portlet名称获取资源权限.
我将使用portlet的名称而不是Id.
portlet的资源许可权名称是该portlet的Id.我检查了Portlet表,它只有Id和其他信息.portlet的其他属性将保存在哪里?
有没有办法通过使用portlet的名称来获取portlet的Id.我有一个workaroud来获取所有portlet并进行比较,但如果我可以使用portlet的名称直接获取portlet的Id,那将会很有帮助.
它的紧急,如果有人知道请回复,这将是非常有帮助的.
提前致谢
我正在考虑实现一个或两个JSR API.我还没有阅读整个规范(计划是在编写实现代码时阅读它们),但我对它们非常熟悉.我已经读过JSR过程包括实现测试兼容性工具包(TCK)来测试所述JSR实现.
在我开始编写一系列单元测试以验证我的实现的正确性/完整性之前,我真的想使用这个TCK,但我不知道它是否适用于我.下载所有文件并在google搜索后,我找不到任何可以定义为给定JSR的TCK的东西.
所以我的问题基本上是:为了生成我自己的JSR规范实现,我需要做哪些步骤,以及如何验证我确实已经这样做了.
对于它的价值,我正在考虑实施JSR-168和JSR-286,但我认为这与这个问题无关.
我在尝试在Liferay 6.0 portlet中设置会话cookie时遇到问题.我希望能够将cookie设置到客户端浏览器以存储用于linkedin身份验证的应用程序密钥,然后可以由其他portlet检索它.
我可以通过以下方式阅读cookie:
public void addLinkedInCV(ActionRequest request, ActionResponse response)
throws PortalException, SystemException {
HttpServletRequest convertReq = PortalUtil.getHttpServletRequest(request);
Cookie[] cookies = convertReq.getCookies();
...
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试阅读一个失败的尝试.
@Override
public void doView(RenderRequest renderRequest,RenderResponse renderResponse) throws IOException, PortletException {
HttpServletResponse convertRes = PortalUtil.getHttpServletResponse(renderResponse);
HttpServletResponse originalRes = (HttpServletResponse) ((HttpServletResponseWrapper) convertRes).getResponse();
Cookie linkedInCookie = new Cookie("linkedIn", util.getAppKey());
originalRes.addCookie(linkedInCookie);
}
Run Code Online (Sandbox Code Playgroud) 我在为我@ActionMapping创建一个PDF文件.现在我想知道如何以保存/打开文件对话框的形式将这个pdf返回给用户?如果这一代人成功的话,我更喜欢这个显示下载链接.
我将spring-mvc 3.0.5与portlet结合使用.但是,如果有人有一些正常应用程序的指针,那么我可以从那里弄清楚.对于2.0,我读了一些关于扩展pdfgenerator类并在web.xml中进行修改的内容但是从现在开始我们只需要POJO ....
编辑:Adeel建议后的代码:
File file = new File("C:\\test.pdf");
response.setContentType("application/pdf");
try {
byte[] b = new byte[(int) file.length()];
OutputStream out = response.getPortletOutputStream();
out.write(new FileInputStream(file).read(b));
out.flush();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "users/main";
Run Code Online (Sandbox Code Playgroud) 我已经创建了一个示例Liferay portlet,并且已成功部署.但是,eclipse控制台没有说"1 portlet已经可以使用了".而且,我在Liferay页面的Add >> More ..选项中找不到这个portlet.
我需要一些对三个不同的Liferay portlet很常见的实用程序类,所以我将在一个应该为我的portlet共享的项目中开发它们.
我正在使用Eclipse和Liferay IDE插件,我的问题是我需要什么样的项目?
我的意思是它是一个简单的Java项目还是任何一种Liferay项目?
我正在将Liferay portlet从6.0迁移到Liferay 7.0,而我遇到的许多障碍之一就是包含了我的自定义taglib.
我遵循以下建议:在Liferay 7中创建自定义taglib,但我的portlet无法加载taglib,记录以下错误:
09:50:48,566 ERROR [http-nio-8080-exec-10][FreeMarkerManager:208] Unable to add taglib my_tags to context
FreeMarker template error:
freemarker.template.TemplateModelException: Error while loading tag library for URI "/META-INF/my_tags.tld" from TLD location "servletContext:/META-INF/my_tags.tld"; see cause exception.
at freemarker.ext.jsp.TaglibFactory.get(TaglibFactory.java:260)
at com.liferay.portal.template.freemarker.internal.FreeMarkerManager$TaglibFactoryWrapper.get(FreeMarkerManager.java:647)
at com.liferay.portal.template.freemarker.internal.FreeMarkerManager.addTaglibSupport(FreeMarkerManager.java:205)
at com.liferay.taglib.util.ThemeUtil.doIncludeFTL(ThemeUtil.java:276)
at com.liferay.taglib.util.ThemeUtil.doDispatch(ThemeUtil.java:157)
at com.liferay.taglib.util.ThemeUtil.includeFTL(ThemeUtil.java:100)
at com.liferay.taglib.util.ThemeUtil.include(ThemeUtil.java:82)
Run Code Online (Sandbox Code Playgroud)
但是,我的捆绑JAR 确实包含META-INF/my_tags.tld
令我印象深刻的是,当我的JSP加载时,错误不会发生,而是在主题的FreeMarker模板中.显然我的JSP在那时甚至没有被加载.
我的门户网站中的每个页面都会抛出错误,而不仅仅是那些包含我的portlet的页面(如果主题已经无法访问taglib,则会出现这种错误)
捆绑JAR的结构是:
com/
content/
META-INF/
+--- resources/
MANIFEST.MF
taglib-mappings.properties
my_tags.tld
OSGI-INF/
WEB-INF/
Run Code Online (Sandbox Code Playgroud)
由bnd任务生成的MANIFEST.MF包含以下依赖项:
Require-Capability: osgi.extender;osgi.extender="jsp.taglib";uri="/META-INF/my_tags.tld"
Run Code Online (Sandbox Code Playgroud)
该文件taglib-mappings.properties包含:
my_tags=/META-INF/my_tags.tld
Run Code Online (Sandbox Code Playgroud)
我还尝试将.tld文件放在WEB-INF/tld …
我创建了一个bean类并在我的控制器中使用它,但它似乎不起作用.即使我进入无效年龄,result.hasErrors仍然是假的.
Bean类:
public class User{
@Min(13)
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName(){
return name;
}
public void setName(String name){
this.name = name;
}
}
Run Code Online (Sandbox Code Playgroud)
控制器片段:
@ActionMapping(params = "myAction=validateUser")
public void validateUser(ActionRequest request, ActionResponse response, ModelMap model, @ModelAttribute("user") @Valid User user, BindingResult result ){
if(result.hasErrors()){
for(ObjectError oe : result.getAllErrors()){
System.out.println(oe.getDefaultMessage());
}
} else{
//code
}
}
Run Code Online (Sandbox Code Playgroud)
JSP:
<form:form action="${registerUser}" method="post" …Run Code Online (Sandbox Code Playgroud) 在Plone 4.1中在站点范围内禁用portlet类型的最佳方法是什么?默认设置提供~10个portlet类型,但站点用户只有少数用例(静态文本,新闻).
我正在开发Liferay 6.1 EE GA3的应用程序.
在控制面板下,我们有一个私有插件安装程序部分,我们可以在其中安装/部署新的portlet.我正在使用面板,该部分工作正常.
然后我尝试安装自定义portlet.由于某种原因安装失败,我从"部署"文件夹中删除了portlet,我甚至重新启动了服务器.这个portlet没有做任何特别的事情,只是针对Liferay的Lucene搜索引擎运行一些自定义查询.
然后,在此过程之后,"服务器>插件安装>私有插件安装程序"部分从我的屏幕"消失".
下面是我在访问"服务器>服务器管理"和"服务器>插件安装"部分时看到的屏幕(您可以看到它显示为空,没有私有插件安装程序的链接):
屏幕截图1:服务器>服务器管理(显示空屏幕)

屏幕截图2:服务器>插件安装(显示空屏幕)

在这个屏幕上,您可以看到我的用户拥有安装插件所需的所有管理权限:
屏幕截图3:我的用户个人资料和权限

在下面的屏幕中,您可以看到私有插件安装程序Hook安装在webapps文件夹中(实际上它已经一直安装),以及其他一些钩子,主题和portlet:
屏幕截图4:Tomcat的webaaps文件夹

以下是/html/portlet/admin/view.jsp和/html/portlet/admin/view.portal.jsp的内容(从代码中删除了初始注释).这些文件未手动编辑.
/html/portlet/admin/view.jsp的内容
<%@ include file="/html/portlet/admin/view.portal.jsp" %>
Run Code Online (Sandbox Code Playgroud)
/html/portlet/admin/view.portal.jsp的内容
<%@ include file="/html/portlet/admin/init.jsp" %>
<c:choose>
<c:when test="<%= permissionChecker.isOmniadmin() %>">
<%
String tabs1 = ParamUtil.getString(request, "tabs1", "server");
boolean showTabs1 = false;
if (portletName.equals(PortletKeys.ADMIN_INSTANCE)) {
tabs1 = "instances";
}
else if (portletName.equals(PortletKeys.ADMIN_PLUGINS)) {
tabs1 = "plugins";
}
else if (portletName.equals(PortletKeys.ADMIN_SERVER)) {
tabs1 = "server";
}
else if (portletName.equals(PortletKeys.ADMIN)) {
showTabs1 = true;
}
String tabs2 = ParamUtil.getString(request, "tabs2");
String tabs3 = …Run Code Online (Sandbox Code Playgroud)