这几天忙的像个鬼一样,好久没有更新blogs了,今天遇到了一个问题想骂娘,所以写出来希望大家遇到这样的问题有点帮助,开发portlet一般init.jsp一般都有:
PortletPreferences prefs = renderRequest.getPreferences();
String portletResource = ParamUtil.getString(request, "portletResource");
if (Validator.isNotNull(portletResource)) {
prefs = PortletPreferencesFactoryUtil.getPortletSetup(request, portletResource, true, true);
}
然后在view.jsp和configuration.jsp中都include这个init.jsp,在配置页面打开后修改了配置,然后在ConfigurationAction中处理,processAction中
PortletPreferences prefs =
PortletPreferencesFactoryUtil.getPortletSetup(
req, portletResource, true, true);或者在renderAction中res.getPreferences()也可以得到,偶遇到的问题就是,同样的init.jsp在配置页和view取得值居然不一样,而且各不相干,好像是两个portlet一样,以前也写了不少,没有出现过这样的问题,仔细查了Portletpreferences的类型,取得的方法,对了又对也没发现问题出在那里,然后又到了数据库找到了这几条数据,果然他们取得是两个不同的数据,不停的找,郁闷啊,一下午过去了,后来终于发现portletResource这什值,居然是"",无语了,死活也想不明白为什么在view的时候这个值是空,这个值也没有看到liferay是在那里放到request中去的,本身现在对lifery 整个的运行机制也不是很清,没办法啊,为了解决问题后来只好在init.jsp中取的方法也改成portletResource = portletDisplay.getId();就可以了,虽然解决了问题,可是心理还是不爽,问题的根本原因还是没有找到.
开发lifery这个东西,有时候不能太相信自已,我就遇到过,比如说清一下缓存,重启一下服务,登陆和注销后再看一下(PortalUtil.getPortletGroupId(request))这个方法有时候在登陆状态和注销状态取得的值都是不一样的,照道理同一个portlet不应该会出现这样的问题,所以说遇到这样的问题郁闷啊.
分享到:
相关推荐
PortletPreferences prefs = request.getPreferences(); try { prefs.setValue(EDIT_USERNAME,request.getParameter(EDIT_USERNAME)); prefs.setValue(EDIT_PASSWORD,request.getParameter(EDIT_PASSWORD)); ...
PortletPreferences**:PortletPreferences用于存储用户对Portlet的个性化配置信息,如颜色偏好、布局设置等。这些信息通常是持久化的,可以在用户的多次访问中保持不变。 #### 四、Portlet的基础概念详解 **1. ...
PortletPreferences接口提供了对Portlet配置信息的访问。 ##### 17.2 PreferenceAttributes范围 PreferenceAttributes定义了Portlet配置信息的属性范围。 #### 十八、Sessions ##### 18.1 创建Session 创建...
例如,我们可以使用Liferay的权限系统来限制portlet对不同用户角色的访问,或者通过portlet间的通信机制(如PortletSession、PortletPreferences)来实现portlet之间的数据共享。 总之,“Programmatically Add ...
当用户提交表单时,将username和password的值存储到PortletPreferences中;如果用户点击取消,将返回视图模式。 - 编辑PortletExamplePortletEdit.jsp,删除或修改不必要的内容,以符合portlet的视图需求。 通过...
- 订阅事件的portlet则通过`PortletPreferences`中的`addString`或`addValue`方法声明它对哪些事件感兴趣,然后在`processAction`或`render`方法中通过`PortletRequest`的`getEvents`来获取和处理这些事件。...
3. **portlet间通信**:通过PortletSession和PortletPreferences,portlet可以共享数据或设置用户偏好。 4. **portlet渲染**:每个portlet可以渲染多个视图,Portlet MVC通过定义不同的视图名称来控制输出。 5. **...
- **portletPreferences**:允许用户自定义Portlet的设置。 - **Ajax支持**:使Portlet具有异步更新的能力,提高用户体验。 - **主题和布局**:利用Liferay的主题机制,定制Portlet的外观以适应不同的门户环境。 - *...
此外,Portlet可以通过`PortletPreferences`来存储用户自定义的设置,通过`PortalContext`获取关于门户环境的信息,通过`ResourceRequest`和`ResourceResponse`处理异步资源请求。Liferay的Service Builder可以帮助...
2. **Liferay API**:学习如何使用Liferay提供的API,如服务定位器(ServiceLocator)、PortletPreferences、SessionAttributes等。 3. **portlet间通信**:了解如何通过Portlet Messaging或Portal Eventing实现...
在实际开发过程中,可能还需要处理portlet间的通信(例如,使用`PortletSession`和`PortletPreferences`),以及与后端服务的集成。你可能会用到Spring的AOP(面向切面编程)来实现事务管理,以及Spring Security来...
4. **PortletPreferences**:用于存储和管理Portlet的配置信息。 5. **JSR168规范**:定义了Portlet容器和Portlet之间的通信接口,是J2中Portlet开发的基础。 6. **PSML (Portlet Sitemap Markup Language)**:一种...
- `PortletPreferences`:用于存储和读取Portlet的用户偏好设置。 ##### 5.11 SESSIONS - **Session管理**:Portlet可以利用HTTP Session来管理用户会话。 ##### 5.12 请求转发至SERVLET/JSP - **...
1. **设置参数的持久化存储**:Portlets提供了一个`PortletPreferences`对象来存储用户的设置参数。这些参数会被持久化存储,即使服务器重启后仍然有效。 2. **请求处理**:Portlets提供了更细粒度的请求处理机制。...
PortletPreferences接口允许开发者存储和检索Portlet的配置信息。这些偏好设置可以被用户修改,并用于个性化Portlet的外观和行为。 **PreferenceAttributes范围** PreferenceAttributes定义了偏好设置的有效范围,...