




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
把基于jsr168的Portlet开发的一些小技巧和小知识记录下来,作为一种备忘和知识积累,便于以后察看。 1. javabean的写法 - java页面的代码: public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException request.setAttribute(username,liuzhaoy #); - jsp页面的写法 - 展示结果 2. 页面编码的写法 如果让其支持汉语,就改为:gb2312喽,呵呵。 3. 图片路径的写法 IMG src=/testportlet/images/mark.gif IMG src= 其中renderResponse.encodeURL表示编码。目录结构截图: 4. 状态的保存 怎么让一个textbox框保持其状态呢,就是输入框里的内容在点击提交按钮后信息不会丢失。 jsp文件 FORM method=post action= INPUT size=20 type=text name=username value= - java文件 声明一个变量: private String UN=null; 在doView()方法如下: public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException request.setAttribute(username,UN); PortletURL saveUrl=response.createActionURL(); saveUrl.setParameter(save,save222); request.setAttribute(saveUrl,saveUrl.toString(); - processAction()方法: public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException String saveStr=request.getParameter(save); System.out.println(saveStr); if(saveStr!=null) / PortletPreferences prefs=request.getPreferences(); / prefs.setValue(userName,request.getParameter(username); / prefs.store(); String username=request.getParameter(username); UN=username; 这样当点击Save按钮时,触发processAction()方法,给UN负值,即UN=username;然后doView()事件触发,在这里,给username负值UN,然后在jsp中用javabean接收即可,即:如图:另外,如果在doView()中写了request.setAttribute(username,UN); 在jsp中用可以直接接收的到,用这样的方法保存状态可能更简单些。:) 另外一种更简单的写法: java文件的processAction()方法中: if( request.getParameter(FORM_SUBMIT) != null ) response.setRenderParameter(saveValue,saveValue); 在jsp中直接接收即可: INPUT name= type=text value=/ 5. 超链接的写法 超链接这个东西折磨了我好久,今天终于把它解决掉了。超链接主要使用renderURL来解决。可以这样理解,renderURL是actionURL的一种优化,Portlet开发过程中尽可能使用renderURL而避免使用actionURL,actionURL使用于确实有Action行为的情况,比如说,form标单的提交,persistent状态的改变,session的操作,preference的修改等。而renderURL通常用来操作portlet内容的导航。 renderURL的写法有两种。 1)使用标签 我的超链接: A href=viewURL 当然,这种情况必须引入:这个标签定义了。 2)写程序 A href=testHref 3). 直接使用标签 A href=portlet:param name=startPos value=/ 不管那种写法,都会触发render()函数,此函数是父类GenericPortlet的一个方法,这里属于覆盖。如下: public void render(RenderRequest request, RenderResponse response) throws PortletException, IOException / super.render(request, response); String markValue=request.getParameter(mark); PortletContext context=getPortletConfig().getPortletContext(); if(markValue!=null) if(markValue.toString().equals(test01) context.getRequestDispatcher(/portlet01/webApp/test01.jsp).include(request,response); else if(markValue.equals(homepage) request.setAttribute(saveValue,saveValue); context.getRequestDispatcher(/portlet01/jsp/html/Portlet01PortletView.jsp).include(request,response); else if(markValue.equals(test02_new) if(request.getParameter(mark_test02)!=null) request.setAttribute(hasButton,true); context.getRequestDispatcher(/portlet01/webApp/test02.jsp).include(request,response); else doView(request,response); 根据设置的testURL参数值,来判断链接的文件。 6. 获取portlet.xml中的初始值: public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException System.out.println(getPortletConfig().getInitParameter(view); - portlet.xml文件 view /fragments/portletrequest/view_portletrequest.jsp 系统会打印出/fragments/portletrequest/view_portletrequest.jsp来,这样,可以把一些值放到这里面在程序中获取。 7. 用renderRequest负值,在jsp页面直接接收 java页面 public void render(RenderRequest request, RenderResponse response) throws PortletException, IOException String viewParam=request.getParameter(linkParam2); request.setAttribute(voteResult_titleID,viewParam); jsp页面 8. Action提交时保持跳转状态 jsp页面 form name=form1 method=post action=portlet:param name=jumpPath value=/portlet:param name=inquireIdAnswerQuestion value=/ onsubmit=return answerSubmit(this) - java页面 public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException if(request.getParameter(inquireAnswerQuestion)!=null) String jump_Path=request.getParameter(jumpPath); String idInquireStr=request.getParameter(inquireIdAnswerQuestion); /获取ID编号 response.setRenderParameter(inquireID,idInquireStr); System.out.println(idInquireStr); jumpPath=rtnPath(jump_Path); private String rtnPath(String path) int dealPathDivideDot=path.indexOf(/vote/); String jumppath=path.substring(dealPathDivideDot); return jumppath; public void render(RenderRequest request, RenderResponse response) throws PortletException, IOException if(jumpPath!=null) String voteTitleId=request.getParameter(voteTitleID); context.getRequestDispatcher(jumpPath).include(request,response); 这里主要的思想就是通过获取本页的路径,然后通过portlet:param name=jumpPath value=/ 进行参数传递,注意的参数传递方式和是一样的,然后再在processAction()中通过String jump_Path=request.getParameter(jumpPath);进行接收,给公共变量jumpPath负值后,在render()中就完成了跳转。 - 新认知例子 怎么让页面上的renderRequest不会出现出错提示呢,经过这样类型转换后即可 RenderRequest renderRequest =(RenderRequest)request.getAttribute(javax.portlet.request); RenderResponse renderResponse =(RenderResponse)request.getAttribute(javax.portlet.response); PortletConfig portletConfig =(PortletConfig)request.getAttribute(javax.portlet.config); 原来用问号的方式也可以传递参数,不错 Code in the portlet String path = /jsptest/jsp/html/testCase.jsp?name=Hailey; PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(path); rd.include(request,response); Code in JSP Hello JSTL标签,用它可以读属性文件,不错,避免把一些东东写死在java文件里,便于管理 9. WebSphere Portal获取当前登录用户名的三种方式方法一:采用Portal的Puma APIJava代码 1. Contextctx=newInitialContext(); 2. PortletServiceHomepumaServiceHome=(PortletServiceHome)ctx.lookup(portletservice/com.ibm.portal.um.portletservice.PumaHome); 3. PumaHomepuma_home=null; 4. if(pumaServiceHome!=null) 5. 6. puma_home=(PumaHome)pumaServiceHome.getPortletService(PumaHome.class); 7. 8.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 做账实操-《关税调整方案》解读与分析
- 记账实操-内部单位间拆借的会计分录
- 着眼2025年育婴师考试考察方向试题及答案
- 西医临床全科综合试题及答案
- 激光技术与工程师资格评估的关键点试题及答案
- 烟台事业单位试题及答案
- 药物的配伍与稳定性考题及答案
- 激光工程技术应用示例试题及答案
- 理解2024年系统架构设计师考试的方向试题及答案
- 考生心理准备与复习状态对西医临床考试的影响试题及答案
- 2025年郑州卫生健康职业学院单招职业适应性测试题库必考题
- 2024 年四川省公务员考试申论、行测【行政执法、省直、综合管理岗、A类、申论】5套 真题及答案
- 教科版四年级科学第二学期期中测试卷(含答案)
- 2025年高考地理高分答题攻略
- 2024年四川省泸州市小升初数学试卷(含答案)
- 2023-2024学年天津市中小学生mixly创意编程 第4课 聪明的按键-教学设计
- 2024年12月大学英语四级考试真题及答案第1套
- SA8000社会责任法律法规清单一览表
- 化学-辽宁省协作体2024-2025学年度高三上学期期末考试试题试题和答案
- 2025年文化产业投资入股保密协议模板3篇
- 2025-2030年中国酶制剂行业竞争格局展望及发展战略研究报告
评论
0/150
提交评论