liferay的一些小笔记

转载,请注明原创地址:http://blog.csdn.net/lan861698789/article/details/8049481


1、velocity的国际化

     $languageUtil.get($locale, "toggle-edit-controls")。这里的msgKey就是你的资源文件中的键值。

2、init.jsp

      \liferay-portal-src-6.1.10-ee-ga1\portal-web\docroot\html\common\init.jsp

     有一个<liferay-theme:defineObjects/>标签,该标签对应的DefineObjectsTag就是将很多liferay的变量放到pageContext。


3、用户图片显示

    今天需要在VM 中显示用户图片不知道怎么去拿。deubg看源码,发现liferay主页 上显示的小图片 是在

\liferay-portal-src-6.1.10-ee-ga1\portal-web\docroot\html\portlet\dockbar\view.jsp 中显示的。

源码:

<aui:a cssClass='<%= "user-portrait" + useDialog %>' data-controlPanelCategory="<%= controlPanelCategory %>" href="<%= themeDisplay.getURLMyAccount().toString() %>" title="manage-my-account">
	<img alt="<%= HtmlUtil.escape(user.getFullName()) %>" src="<%= HtmlUtil.escape(user.getPortraitURL(themeDisplay)) %>" />
</aui:a>
但是 我 那个VM 中却 得不到request 和 themdisplay。但是可以得到user。现在需要的是imagePath,就是从themdisplay中取出的。

于是看源码themdisplay是怎么放这个 imagePath 的。

点击页面标签 <liferay-theme:defineObjects />,进入tld,然后进入DefineObjectsTag.java,发现 pageContext.setAttribute("themeDisplay", themeDisplay); 这个没用,这里是将所有themdisplay中的东西放到pageContent去,方便页面直接取出。

继续查找“setPathImage”,发现liferay-portal-src-6.1.10-ee-ga1\portal-impl\src\com\liferay\portal\events\ServicePreAction.java

themeDisplay.setPathImage(imagePath);//在这里初始化了themdisplay。
继续找

String imagePath = dynamicResourcesCDNHost.concat(PortalUtil.getPathImage());
原来这个imagePath就是从PortalUtil.getPathImage()取出来的。

OK 了,那我就直接从 PortalUtil.getPathImage() 取值好了。

在 \liferay-portal-src-6.1.10-ee-ga1\portal-impl\src\com\liferay\portal\velocity\VelocityVariablesImpl.java 已经把PortalUtil 放到 velocityContext 中去了。我的VM就能直接去取了。


4、lifeary权限问题

在liferay-portal-src-6.1.10-ee-ga1\portal-impl\src\com\liferay\portal\events\ServicePreAction.java,

运行很多程序都会去检查你的权限,那么权限是在哪里设置的了?

在这个类中,首先会去request中拿出你的user:

user = PortalUtil.getUser(request);
如果user为空,则

if (user == null) {
	user = company.getDefaultUser();
}
这是去user_表中 拿defaultuser = 1的数据。

然后就是设置权限

PermissionChecker permissionChecker = PermissionCheckerFactoryUtil.create(user);
PermissionThreadLocal.setPermissionChecker(permissionChecker);
以后在其他的地方就会这么调用,看liferay-portal-src-6.1.10-ee-ga1\portal-service\src\com\liferay\portal\service\base\PrincipalBean.java,77行。

public PermissionChecker getPermissionChecker() throws PrincipalException {
	PermissionChecker permissionChecker =	PermissionThreadLocal.getPermissionChecker();
	if (permissionChecker == null) {
		throw new PrincipalException("PermissionChecker not initialized");
	}
	return permissionChecker;
}

在一些地方调用liferay的service时候会抛异常,说

com.liferay.portal.security.auth.PrincipalException: PermissionChecker not initialized
at com.liferay.portal.service.base.PrincipalBean.getPermissionChecker(PrincipalBean.java:82)

这时候,有两种解决办法:

1)、和上面拿到user_表中默认user,然后设到PermissionChecker中。

2)、指定自己的user

User user = UserLocalServiceUtil.getUserByScreenName("joe_user");
   PermissionChecker permissionChecker =  PermissionCheckerFactoryUtil.create(user);
   PermissionThreadLocal.setPermissionChecker(permissionChecker);

5、liferay官网列子


http://svn.liferay.com/repos/public/plugins/trunk/portlets/

guest/guest

各版本:http://svn.liferay.com/repos/public/plugins/branches/
插件下载地址:http://www.liferay.com/marketplace


6、关于配置liferay数据库问题

学习liferay6.0 或者 6.1时候,官网就说在liferay-portal-6.1.1-ce-ga2\tomcat-7.0.27\webapps\ROOT\WEB-INF\classes 下面增加一个portal-ext.properties的文件,里面放入

jdbc.default.driverClassName=com.mysql.jdbc.Driver
jdbc.default.url=jdbc:mysql://192.168.179.116/lportal_6_1?useUnicode=true&characterEncoding=UTF-8&useFastDateParsing=false
jdbc.default.username=root
jdbc.default.password=abc123_

那么还有其他办法吗?

我们还可以liferay-portal-6.1.1-ce-ga2\tomcat-7.0.27\webapps\ROOT\WEB-INF\lib\portal-imp.jar中找到portal.properties,注释掉Hypersonic的代码,然后把mysql的注释给消掉,最后重新将这个文件放入jar。这样就OK了。

其实,我们也可以在源码的liferay-portal-src-6.1.10-ee-ga1\portal-impl\src\portal.properties 找到这个文件里面的代码。















评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值