Author: mmcallis
Date: 2008-02-07 22:32:17 -0500 (Thu, 07 Feb 2008)
New Revision: 9855
Modified:
docs/branches/JBoss_Portal_Branch_2_6/referenceGuide/en/modules/tutorials.xml
Log:
trying to commit changes for 5.2.1.2. Package Structure and
5.2.1.3. Portlet Class after running tutorials.xml through
unix2dos line break fixing...
Modified: docs/branches/JBoss_Portal_Branch_2_6/referenceGuide/en/modules/tutorials.xml
===================================================================
---
docs/branches/JBoss_Portal_Branch_2_6/referenceGuide/en/modules/tutorials.xml 2008-02-08
03:24:09 UTC (rev 9854)
+++
docs/branches/JBoss_Portal_Branch_2_6/referenceGuide/en/modules/tutorials.xml 2008-02-08
03:32:17 UTC (rev 9855)
@@ -100,7 +100,7 @@
<title>Tutorials</title>
<para>
The tutorials contained in this chapter are targetted toward portlet developers.
Although they are a good
- starting and reference point, it is heavily recommend that portlet developers
read and understand the
+ starting and reference point, it is highly recommend that portlet developers
read and understand the
<ulink
url="http://www.jcp.org/en/jsr/detail?id=168">JSR-168 Portlet
Specification</ulink>. Use the <ulink
url="http://jboss.org/index.html?module=bb&op=viewforum&...
Portal User Forums</ulink> for user-to-user help.
</para>
<!--<sect2 id="build_instructions">
@@ -148,9 +148,8 @@
<sect3>
<title>Package Structure</title>
<para>
- Portlets are packaged in WAR files, just like other JEE applications. A
typical portlet WAR file can also
- include servlets, resource bundles, images, HTML, JSPs, and other static
or dynamic files you would
- commonly include.
+ Like other Java EE applications, portlets are packaged in WAR files. A
typical portlet WAR file can also
+ include servlets, resource bundles, images, HTML, JSPs, and other static
or dynamic files. The following is an example of the directory structure of the
HelloWorldPorlet portlet:
</para>
<para>
<mediaobject>
@@ -163,84 +162,108 @@
<sect3>
<title>Portlet Class</title>
<para>
- Included in the
- <ulink
url="http://anonsvn.jboss.org/repos/portletswap/portlets/2_4/bundles...
- download bundle</ulink> you should have one java source file:
-
<literal>HelloWorldPortlet\src\main\org\jboss\portlet\hello\HelloWorldPortlet.java</literal>,
and it
- should contain the following:
- <programlisting><![CDATA[package org.jboss.portlet.hello;
+ The following is the
<filename>HelloWorldPortlet\src\main\org\jboss\portlet\hello\HelloWorldPortlet.java</filename>
java source file, which comes bundled with the <ulink
+
url="http://anonsvn.jboss.org/repos/portletswap/portlets/2_6/bundles...;:
+ </para>
+ <para>
+<screen><![CDATA[
+package org.jboss.portlet.hello;
+
+
import javax.portlet.GenericPortlet;
+
import javax.portlet.PortletException;
+
import javax.portlet.RenderRequest;
+
import javax.portlet.RenderResponse;
+
import javax.portlet.UnavailableException;
+
import java.io.IOException;
+
import java.io.PrintWriter;
+
public class HelloWorldPortlet extends GenericPortlet
+
{
- protected void doView(RenderRequest rRequest, RenderResponse rResponse)
- throws PortletException, IOException, UnavailableException
- {
- rResponse.setContentType("text/html");
- PrintWriter writer = rResponse.getWriter();
- writer.write("Hello World!");
- writer.close();
- }
-}]]>
- </programlisting>
- Now let's dissect our simplest of portlets:
- <itemizedlist>
- <listitem>
- <para>
- <programlisting>public class HelloWorldPortlet extends
GenericPortlet</programlisting>
- All Portlets MUST implement the
<literal>javax.portlet.Portlet</literal> interface. The Portlet
- API also provides a convenience implementation of this interface
in the form of the
- <literal>javax.portlet.GenericPortlet</literal> class
which, among other things, implements
+
+ protected void doView(RenderRequest rRequest, RenderResponse rResponse)
+ throws PortletException, IOException, UnavailableException
+
+ {
+
+ rResponse.setContentType("text/html");
+
+ PrintWriter writer = rResponse.getWriter();
+
+ writer.write("Hello World!");
+
+ writer.close();
+
+ }
+
+} ]]>
+</screen>
+ </para>
+ <para>
+ <variablelist>
+ <varlistentry><term><screen>
+public class HelloWorldPortlet extends GenericPortlet</screen></term>
+ <listitem>
+ <para>
+ All portlets must implement the
<literal>javax.portlet.Portlet</literal> interface. The portlet
+ API provides a convenient implementation of this interface, in
the form of the
+ <literal>javax.portlet.GenericPortlet</literal>
class, which among other things, implements
the <literal>Portlet render</literal> method to
dispatch to abstract mode-specific methods to
- make it easier to support the standard portlet modes. It also
provides
+ make it easier to support the standard portlet modes. As well, it
provides
a default implementation for
<literal>processAction</literal>, <literal>init</literal> and
- <literal>destory</literal> methods. It is recommended
to extend <literal>GenericPortlet</literal>
+ <literal>destroy</literal> methods. It is recommended
to extend <literal>GenericPortlet</literal>
for most cases.
- </para>
- </listitem>
- <listitem>
- <para>
- <programlisting>protected void doView(RenderRequest
rRequest, RenderResponse rResponse) throws
- PortletException, IOException,
UnavailableException</programlisting>
- As we extend from <literal>GenericPortlet</literal>
and we are only interested in supported the
- <literal>VIEW</literal> mode, we only need to
implement the <literal>doView</literal> method,
- and <literal>GenericPortlet</literal>'s
<literal>render</literal> implementation will call our
- implementation when the <literal>VIEW</literal> mode
is requested.
- </para>
- </listitem>
- <listitem>
- <para>
-
<programlisting>rResponse.setContentType("text/html");</programlisting>
- Just like in the servlet-world, you must declare what
content-type the portlet will be
- responding in. You need to do this before starting to write
content or the portlet will throw
- an exception.
- </para>
- </listitem>
- <listitem>
- <para>
- <programlisting><![CDATA[
-PrintWriter writer = rResponse.getWriter();
-writer.write("Hello World!");
-writer.close();]]></programlisting>
- Here we output the text
- <literal>Hello World!</literal>
- in our portlet window.
- <note>
- Portlets are responsible for generating markup fragments, as
they are included on a page and
- surrounded by other portlets. In particular, this means that a
portlet outputting HTML MUST
- not output any markup that cannot be found in a
<literal>body</literal> element.
- </note>
- </para>
- </listitem>
- </itemizedlist>
- </para>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term><screen>
+protected void doView(RenderRequest rRequest, RenderResponse rResponse)
+throws PortletException, IOException, UnavailableException</screen></term>
+ <listitem>
+ <para>
+ As we extend from <literal>GenericPortlet</literal>, and are only
interested in supporting the <literal>VIEW</literal> mode, only the
<literal>doView</literal> method needs to be implemented, and the
<literal>GenericPortlet</literal> <literal>render</literal>
implemention calls our implementation when the <literal>VIEW</literal> mode is
requested.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term><screen>
+rResponse.setContentType("text/html");</screen></term>
+ <listitem>
+ <para>
+ As in the servlet-world, you must declare what content-type the portlet will be
+ responding in. Do this before starting to write content or the portlet will throw an
exception.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry><term><screen>
+PrintWriter writer = rResponse.getWriter();
+writer.write("Hello World!");
+writer.close();</screen></term>
+ <listitem>
+ <para>
+ This produces the <literal>Hello World!</literal> text in our portlet
window.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+</para>
+<para>
+ <note>
+ <para>
+ Portlets are responsible for generating markup fragments, as they are included on a
page and are
+ surrounded by other portlets. In particular, this means that a portlet outputting HTML
must
+ not output any markup that cannot be found in a
<literal><body></literal> element.
+ </para>
+ </note>
+</para>
</sect3>
<sect3 id="first_portlet_descriptors">
<title>Application Descriptors</title>