一、Portal开发流程:(SSHPortlet开发)
0.配置环境变量:pathclasspathjavahome为Portal的所在路径
1.首先建立一空portlet
修改工程名及包名
2.导入Portlet所需要JAR包
3.修改ties
=porta1容器所在的路径
=工程的所在路径(../工程名)
=war包的名字()
=jar包的名字祝福女生的话 ()
4.修改所需是的XML文件
(1).中的portletid
中的portlet-name、struts-path
中的portlet-name、display-name、short-title、keywords
中的display-name、rvlet-name
以上四项中的这些标签取值最好都一模一样。
(2)将中的
person和中的
、
中的person字符串都替换成你自己的虚拟路径名,中的所有虚
拟路径也替换成你的路径名。
5.修改portlet标题
a.如果想让portlet的title也中文,则将中的title取值为中文,如果部
署有误,则将其native2ascii转化后填上(title的值为何有时需native2ascii转换
有时不需还不清楚,待系统正式上线后再研究)。
b.在portlet项目中的中有一行,
name="">,其中定义了你的portlet项目在哪个分
类下,如果我想我的portlet项目在“人员”分类下该如何做?参照以下步骤:
关闭你的Portal,找到SSPU-Portal-Oraclecommonlib下的,用winrar
打开,找到content文件夹下的Language_zh_ties文件,用utlraedit编
辑它,新增一行:==u4ebau5458(注意等号两边不
能有空格或其它脏字符),u4ebau5458是“人员”用native2ascii转过来的。
保存文件后winrar会提示你是否保存,点击“yes”即可。然后关闭winrar,重
启你的Portal,你的项目即在“人员”分类下了!
6.配置国际化
7.配置JNDI
9.写POJO类并配置对应的XML文件
10.写DAo层
11.写Service层
12.配置spring
13.写测试类本地测试
13.写Action
14.写页面
15.配置
16.利用ANT工具生成war文件
17.启动Portal进行测试.
二、国际化支持
1.首先建立自己的Resource_、Resource_(在src目录下面)
2.在中的
-bundle>其值是Resource_所在地
3.在你的jsp页面顶部添加这两行即可以增加国际化支持:
<%@tagliburi="/taglibs/id-i18n"prefix="i18n"%>
e"locale="<%=ale()%>"/>其中baName的值为你的Resource_
所在包名
在程序中使用标签:
三、JNDI配置
在portlet开发中,往往每个portlet都需要配置数据源,如何统一使用liferayportal系
统提供的数据源?
在spring配置文件中()将如下这段:
class="Manag简笔画耳朵 erDataSource">
改成以下这段:
其中,在你的Portal系统的conf文件夹下的中应该有如下配置:
auth="Container"
type="urce"
driverClassName="Driver"
url="jdbc:oracle:thin:简约客厅背景墙 @127.0.0.1:1521:orcl"
urname="system"
password="system1234"
maxActive="50"/>
这里的jdbc/liferayPool应该和你的java:comp/env/jdbc/LiferayPool对应(java:comp/e麦苗 nv/
是前缀,必须加上)
四、SSH整合
1.在中添加spring插件:
tLoaderListener
/WEB-INF/spring/,
/WEB-INF/spring/,
/WEB-INF/spring/
2.在、中配置BEAN
3.在中配置JNDI及PoJO类的配置文件
4.写Dao层、Service层和Action
五、调试Portlet问题及解决办法
装载失败.原因:a.没有get、t方法
写错
文件名写错
中PoJo类的配置文件路径或文件名有误
e.缺少所需要的JAR包文件
2.页面跳转失败.原因:rward(“”)语句缺少return关键字.
b.跳转路径有误.
3.国际化标签无效原因:a.在中没有
标签
b.资源文件里面没有对应的项.
六、分页技术的实现
a.清楚几点:记录总数每页显示记录数要分的页数前一页后一页开始的记录
b.要得到分页前的记录集合
c.利用分页算法对集合进行处理
(1)根据当前页码将要显示的记录添加到另外的集合
(2)将转换后的集合进行显示
d.在页面上对页码进行控制
eg:页面实体:
publicclassPages{
intpage;//当前页
intback;//上一页
intnext;//下一页
intpageStart;//当前页开始数据id
intpageAmount;//每一页显示条数
intamount;//总数据条数
intpages从军行其四 ;//总页数
publicintgetPages(){
returnpages;
}
publicvoidtPages(intpages){
=pages;
}
publicintgetPageStart(){
returnpageStart;
}
publicvoidtPageStart(intpageStart){
art=pageStart;
}
publicintgetAmount(){
returnamount;
}
publicvoidtAmount(intamount){
=amount;
}
publicintgetBack(){
returnback;
}
publicvoidt买菜的作文 Back(intback){
=back;
}
publicintgetNext(){
returnnext;
}
publicvoidtNext(intnext){
=next;
}
publicintgetPage(){
returnpage;
}
publicvoidtPage(intpage){
=page;
}
publicintgetPageAmount(){
returnpageAmount;
}
publicvoidtPageAmount(intpageAmount){
ount=pageAmount;
}
}
页面算法:
publicclassPaging{
/**
*
*@parampage
*当前页
*@parampageAmount
*每页显示数据条数
*@paramamount
*数据总数
*@return分页对象
*/
publicPagesgetPages(intpage,intpageAmount,intamount){
intpages;
intpageStart;
intback;
intnext;
page=page!=0?page:1;
if(amount/pageAmount>0){
pages=amount%pageAmount==0?amount/pageAmount:
amount/pageAmount+1;
}el{
pages=1;
}
back=page>1?page-1:0;
next=page
pageStart=(page-1)*pageAmount;
Pagesp=newPages();
e(page);
eAmount(pageAmount);
unt(amount);
es(pages);
eSt小小推销员 art(pageStart);
k(back);
t(next);
returnp;
}
}
分页应用:
list为分页前的集合
Pagespages=null;
intpagesize=10;
intn=();
ListobjectList=newArrayList();
intcurrentlyPage=ameter("page")!=null?
nt(ameter("page")):1;//判断;
Pagingpaging=newPaging();
//创建分页算法对象
intamount=();
//总记录数
pages=es(currentlyPage,pagesize,amount);
//设置分页参数
ribute("pages",pages);//保存分页参数
inti=currentlyPage*10-10;
if(i+10<=n){
for(intj=i;j
((j));
}
}el{
for(intj=i;j
((j));
}
}
ribute("stuLeaveList",objectList);
在页面上的使用:
key=""/> ${} &nb
sp;
ef="javascript:firstPage
>
href="javascript:previousPage
}')">
|
ref="javascript:nextPage
|
href="javascript:lastPage
>
七、页面滚动条的添加
1.定义样式
#multi-list{
border:0solid#CCCCCC;
clear:both;
margin:0;
overflow-x:auto;//平行滚动条
overflow-y:auto;//垂直滚动条
padding:0;
width:700px;
height:260px;
float:center;
}
2.利用层来引用样式实现滚动条的添加
………………
………………
………………
八、选项卡的使用
实现:引用CSS样式+超链接来实现的.
九、辅助类的使用
1.为什么要使用辅助类?
当一张表中的某一字段引用另外一张表时,这两张表又没有外键约束,
这时才考虑使用辅助类.
2.使用方法:例如:(1).
ClassA{}
ClassB{}
ClassAssist{//辅助类
PrivateAa;
PrivateBb;
PublicAssist(Aa,Bb){
This.a=a;
This.b=b;
}
Get/Set方法;
}
(2).Stringhql=”lectnewAssist(a,b)fromAa,B
=”;
本文发布于:2023-03-21 15:45:25,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/1679384726153996.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:portal.doc
本文 PDF 下载地址:portal.pdf
留言与评论(共有 0 条评论) |