Liferay开发过程中的一些常见问题

怎么获取HttpServletRequest

在一些特殊情况下,我们希望在portlet中使用原生的httpServletRequest,可以使用下面的代码获取,下面分别是renderRequest和actionRequest

HttpServletRequestrequest = PortalUtil.getHttpServletRequest(renderRequest);

HttpServletRequestrequest = PortalUtil.getHttpServletRequest(actionRequest);

怎么获取UserId,groupId,companyId

Liferay中的二级开发,在设计表的时候强烈建议为每一个表添加groupId和companyId,这样我们的系统就可以在不同的站点、company下面独立使用。获取这些参数的代码如下:

LongcompanyId = PortalUtil.getCompanyId(renderRequest);

LonggroupId = PortalUtil.getScopeGroupId(renderRequest);

longuserId = PortalUtil.getUserId(request);

如果是获取User可以直接使用下面的:

User user= PortalUtil.getUser(request);

Liferay中怎么获取当前页面/导航的名称

Liferay中的导航其实就是一个个的页面,这个页面对应于Liferay中的Layout这个实体,其实要获取页面/导航的信息,只需要获取到Layout即可。

layout在Jsp中通过下面的两种方法获取

Layoutlayout = (Layout) request.getAttribute(WebKeys.LAYOUT);

或者是添加以下的标签:

<%@ tagliburi="http://liferay.com/tld/theme" prefix="liferay-theme"%>

<liferay-theme:defineObjects/>

有了上面的这两个标签,即可直接使用layout

layout.getName就是页面/导航的名称,通过这个还可以获取父页面的信息,子页面的信息等。

表单提交参数的获取

Liferay对于从Request里面获取提交参数进行了一个简单的封装,提供了不少便利。

ParamUtil是对参数获取的一个封装,可以方便的对获取到的参数赋予默认值,类型转换等。Request支持servletRequest和PortletRequest、ActionRequest。下面是一些常用的方法,其他还有一些date了使用方法类型

获取字符串

String title =ParamUtil.getString(request, "title","liferay");

这个代码等同于

String title =request.getParameter("title");

 if(title==null){

 title = "liferay";

 }

第三个参数如果为空,则当title为空的时候赋予“”,也就是一个空的字符串。

对于long,date,int等还提供了内置的转换。

 获取数字

ParamUtil.getInteger(ServletRequestreq,String param)

ParamUtil.getInteger(ServletRequestreq,String param,int defaultVlue)

如果没有指定默认值,则默认值为“0”。

ParamUtil.getDouble(ServletRequestreq,String param)

ParamUtil.getDouble(ServletRequestreq,String param,doubledefaultVlue)

如果没有指定默认值,则默认值为0.0。

getFloat、getShort、getLong类似。

获取boolean

ParamUtil.getBoolean(servletreq,String param)

ParamUtil.getBoolean(servletreq,String param,Boolean default)

这个方法对于参数为:“true”,“t”,“y”,“on”,“1”时会转化为true,默认为false;如果是其他的情况不要使用。

Liferay中的类型转换

在开发中常遇到类型的强制转换,比如将String id = "123"中的id,由String类型,转换成long类型,我们通常使用下面的代码。

long idl =Long.valueOf(id);

但这样会有一个问题,会出现一个异常,当转换失败的时候我们需要处理这个异常,或者我们希望转换失败的时候可以赋予一个默认值,这样写起来就会有一点复杂,Liferay封装了一个类型转换类GetterUtil。上面的代码如果使用这个类方法为:

long idl =GetterUtil.getLong(id,1);

这个的意思是说当转换失败的时候,为这个idl赋予默认值 1,如果第二个参数不加,则默认值为0。

GetterUtil里面还有其他常见类型的转换方法,具体的可以自行查阅API

Liferay中的StringUtil工具类

Liferay中的StringUtil类是我最常使用LiferayAPI,他提供了一些常用方法的封装。

如将一个字符串中的数字提取出来:StringUtil.extractDigits(String s)

如将一个集合(List、数组)转换成一个字符串,并使用一定的分割符切分:

方法为:merge(Collection<?>col) 和merge(Collection<?> col, String delimiter)

如果不加第二个参数,默认是以英文逗号切分等。

此类比较简单,看一下API就可以了解具体的使用。

Liferay中的验证工具类

非空检查、判断一个字符串是不是数字、是不是邮件地址、是不是IP地址、是不是URL地址等,都可以使用此工具类Validator。具体的使用方法看API,比较简单,不详述。

Liferay中如何判断当前运行环境的类型

在一些特殊的情况下,我们需要判断当前环境的类型,如是运行在tomcat中还是在weblogic或者是其他的中间件,因为中间件的差异,有些特殊的代码,希望为不同的中间件编写特殊的内容。Liferay封装了一个下面的方法,如果不是在Liferay中使用,有这样需求的,也可以参考一下Liferay的ServerDetector代码。

我们可以使用下面的代码判断。

if(ServerDetector.isTomcat()){//tomcatserver

   ……

}elseif(ServerDetector.isWebLogic()){//weblogic server

……

}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值