portlet编写入门

生成下面的两个文件:

view.jsp:显示欢迎信息,并且提供编辑页面的链接。

edit.jsp:显示有一个文本框的表单,允许欢迎信息可以被修改,并且包括一个回退到view.jsp的超级链接。

 

MVCPortlet类处理展示我们的JSPs,因此在本DEMO中,我们不需要生成一个单独的JAVA类。

 

首先我们不希望在同样的页面上出现多个欢迎信息,因此让我们的elearn007greeting 为非实例化。因此只需要编辑liferay-portlet.xml文件即可,如果你的配置文件里有instanceable属性,只需要把其设置为false即可,如果没有,请添加它,例如下面的例子:

<portlet>
    <portlet-name>my-greeting</portlet-name>
    <icon>/icon.png</icon>
    <instanceable>false</instanceable>
    <header-portlet-css>/css/main.css</header-portlet-css>
    <footer-portlet-javascript>/js/main.js</footer-portlet-javascript>
    <css-class-wrapper>my-greeting-portlet</css-class-wrapper>
</portlet>

现在我们将生成我们的jsp模板,从编辑view.jsp文件开始,该文件在你的docroot目录下,用下面的内容替换它:

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ page import="javax.portlet.PortletPreferences" %>

<portlet:defineObjects />

<%
PortletPreferences prefs = renderRequest.getPreferences();
String greeting = (String)prefs.getValue(
"greeting", "Hello! Welcome to our portal.");
%>

<p><%= greeting %></p>

<portlet:renderURL var="editGreetingURL">
    <portlet:param name="mvcPath" value="/edit.jsp" />
</portlet:renderURL>

<p><a href="<%= editGreetingURL %>">Edit greeting</a></p>

edit.jsp

<%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
<%@ taglib uri="http://liferay.com/tld/aui" prefix="aui" %>

<%@ page import="javax.portlet.PortletPreferences" %>

<portlet:defineObjects />

<%
PortletPreferences prefs = renderRequest.getPreferences();
String greeting = renderRequest.getParameter("greeting");
if (greeting != null) {
    prefs.setValue("greeting", greeting);
    prefs.store();
%>

    <p>Greeting saved successfully!</p>

<%
}
%>

<%
greeting = (String)prefs.getValue(
    "greeting", "Hello! Welcome to our portal.");
%>

<portlet:renderURL var="editGreetingURL">
    <portlet:param name="mvcPath" value="/edit.jsp" />
</portlet:renderURL>

<aui:form action="<%= editGreetingURL %>" method="post">
    <aui:input label="greeting" name="greeting" type="text" value="<%=
greeting %>" />
    <aui:button type="submit" />
</aui:form>

<portlet:renderURL var="viewGreetingURL">
    <portlet:param name="mvcPath" value="/view.jsp" />
</portlet:renderURL>

<p><a href="<%= viewGreetingURL %>">← Back</a></p>

注意,首先在超链接生成部分,使用了<portlet:renderURL>标签,该标签在http://java.sun.com/portlet_2_0标签库中进行了定义。该链接只有一个mvcPath参数,通常被MVCPortlet用来确定调用哪个jsp文件来重绘request 请求。一定注意,要用标签库来生成链接,因为portlet并没有拥有整个WEB页面,相反仅仅是一部分页面。

 

第二,注意edit.jsp文件的表单有个aui前缀,表示它属于AlloyUI标签库。

该标签库简化了代码量,提高了开发效率,但是你仍然可以使用HTML或是其他标签库这以你自己的选择为优先。

 

另外的jsp标签库你也会注意到<portlet:defineObjects/>该标签用来在JSP里插入一组隐含的变量,这些变量对开发很重要,包括:renderRequest,portletConfig,portletPreferences,等等,注意JSR-286方案定义了四个生命周期方法:processAction,processEvent,render,和serveResource.

这些变量仅仅可以用在JSPportlet特定生命周期阶段,下面列表对JSP可用的对象:

l RenderRequest-代表被发送到portlet的请求,该对象仅仅在render请求阶段可用。

l ResourceRequest-代表资源,在JSP处在资源服务阶段可用。

l ActionRequest-代表请求对象,该对象发送到处理一个action的portlet上,该对象在行动处理阶段可用。

l EventRequest-事件请求对象

l ResourceResponse-在资源服务阶段可用,代表资源回应对象,帮助portlet来绘制资源。

l EventResponse

l PortletConfig-代表配置对象

l PortletSession-

l Map<String,Object> portletSessionScope:提供一个映射,类似调用PortletSession.getAttributeMa()

l PortletPreferences-表示portlet的偏好设置

l Map<String,String[]> portletPreferencesValue:提供一个映射,类似PortletPreferences.getMap()的调用,如果没有设置项,该映射则为空。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值