首页 / 软件开发 / JAVA / liferay的稍微复杂的一个portlet实例
liferay的稍微复杂的一个portlet实例2009-11-12 javaeye w2c2y2一、实例这里我们采用portal里面代码规范生成机制。对于持久化层和服务层的类都可以自动产生。我们的portlet功能很简单就是从数据库里面一个表中获取数据,并在页面上显示。建立业务数据表在数据库里面新建一个表users,字段userid(varcher),username(varcher),password(varcher).并往表中插入几个条数据。建立代码模板配置文件(1)建立service.xml文件在extext-implsrccomextportlet 新建一个目录users,在目录下建立一个service.xml文件文件内容为:<?xml version="1.0"?>
<!DOCTYPE service-builder PUBLIC "-//Liferay//DTD Service Builder 5.1.0//EN" "http://www.liferay.com/dtd/liferay-service-
builder_5_1_0.dtd">
<service-builder package-path="com.ext.portlet.users">
<namespace>Users</namespace>
<entity name="UsersEntry" local-service="false" remote-service="true" persistence-
class="com.ext.portlet.users.service.persistence.UsersEntryPersistenceImpl">
<!-- PK fields -->
<column name="userid" type="String" primary="true" />
<!-- Audit fields -->
<column name="username" type="String" />
<column name="password" type="String" />
<!-- Order -->
<order by="asc">
<order-column name="username" case-sensitive="false" />
</order>
</entity>
<exceptions>
<exception>UsersEntry</exception>
</exceptions>
</service-builder>
<!--package-path是指我们即将建立portlet的上级目录-->
<!-- portlet name就是我们新建文件夹名称users,short-name没有作研究不太清楚使用途径-->
<!--entity name 是和我们即将建立的和数据库表a_user一一对应实体的类名,可以和数据库表名不同,
<!--但为方便起见一般和表名保持一致-->
(2)修改ant文件,增加ant任务建好service.xml文件后,我们在ext-impl目录下打开build-perent.xml 在<target name="build-service">
…….
</target>
下面添加任务<target name="build-service-portlet-users">
<antcall target="build-service">
<param name="service.file" value="src/com/ext/portlet/users/service.xml" />
</antcall>
</target>
然后在myexlipse的ant视图里面打开ext-impl目录下的build.xml执行build-service-portlet-user任务。我们发现在ext-implsrccomextportletusers , ext-servicesrccomextportletusers下面多了几个目录和文件。这是都是系统自动产生的hibernate的实体类和持久化类。如果我们再细心些也可发现在ext-implsrcMETA-INF目录下配置文件都多些内容。系统已经自动将对应的实体类、持久化类、工具类等配置为相应的javabean、util、service等。无疑节省了很多时间,而且减少我们人工配置的错误。打开ext-implsrcMETA-INFext-hbm.xml,把<class name="com.ext.portlet.users.model.impl.UsersEntryImpl" table="UsersEntry">改为<class name="com.ext.portlet.users.model.impl.UsersEntryImpl" table="Users">