Avatar billede margitbork Nybegynder
12. oktober 2007 - 12:30 Der er 7 kommentarer og
1 løsning

Konvertering fra Applikation til portlet

Jeg har en applikation, hvor vi er ved at undersøge hvad der skal til for at lave den om så de enkelte "områder" kommer til at kunne køre som portletter på websphere portal server.

Jeg har en RAD 7, websphere app server v.6 og websphere portal server v.6

Jeg sidder og bakser med eksempler fra en redbook, men der er meget jeg ikke forstår/skal bruge...Der anvendes bl.a. jsf - som jeg ikke kender noget til, og al kode bliver autogenereret så det eneste jeg skal er at pille i forskellige properties, men det giver mig ikke så meget indsigt i hvordan sådan en portal virker.

Så det jeg rigtigt godt kunne tænke mig er et eksempel på hvordan man laver en portal med en portlet, bare som demonstration af hvordan teknologien ser ud, når man selv laver koden...

Margit
Avatar billede arne_v Ekspert
13. oktober 2007 - 04:10 #1
Jeg har et gammelt eksempel liggende.

fragment af portlet.xml:

    <portlet>
        <portlet-name>LinksPortlet</portlet-name>
        <display-name>Link collection</display-name>
        <portlet-class>test.LinksPortlet</portlet-class>
        <init-param>
            <name>jspView</name>
            <value>/viewlinks.jsp</value>
        </init-param>
        <init-param>
            <name>jspEdit</name>
            <value>/editlinks.jsp</value>
        </init-param>
        <supports>
            <mime-type>text/html</mime-type>
            <portlet-mode>VIEW</portlet-mode>
            <portlet-mode>EDIT</portlet-mode>
        </supports>
        <supported-locale>en</supported-locale>       
        <portlet-info>
            <title>Links collection.</title>
            <short-title>Links.</short-title>
            <keywords>links web resources</keywords>
        </portlet-info>
    </portlet>

viewlinks.jsp:

<%@ page session="false" %>
<%@ page import="java.util.*" %>
<%@ page import="javax.portlet.*" %>
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<portlet:defineObjects/>
<ul>
<%
PortletPreferences prefs = renderRequest.getPreferences();
Enumeration e = prefs.getNames();
while(e.hasMoreElements()) {
    String title = (String)e.nextElement();
    String url = prefs.getValue(title, "*");
    %>
    <li><a href="<%=url%>"><%=title%></a></li>
    <%
}
%>
</ul>

editlinks.jsp:

<%@ page session="false" %>
<%@ page import="javax.portlet.*" %>
<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<jsp:useBean id="action" scope="request" class="java.lang.String"/>
<portlet:defineObjects/>
<form method="POST" action="<%=action%>">
Title: <input type="TEXT" name="title"/>
<br/>
URL:  <input type="TEXT" name="url"/>
<br/>
<input type="SUBMIT" value="Save"/>
</form>

LinksServlet.java:

package test;

import javax.portlet.*;
import java.io.*;

public class LinksPortlet extends GenericPortlet
{
    private final static String ADD = "add";
    public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException {
        if(request.getParameter(ADD) != null) {
            PortletPreferences prefs = request.getPreferences();
            prefs.setValue(request.getParameter("title"), request.getParameter("url"));
            prefs.store();
        }
    }
    public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException
    {
        response.setContentType("text/html");
        String jspName = getPortletConfig().getInitParameter("jspView");
        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(jspName);
        rd.include(request,response);
    }
    public void doEdit(RenderRequest request, RenderResponse response) throws PortletException, IOException
    {
        response.setContentType("text/html");
        String jspName = getPortletConfig().getInitParameter("jspEdit");
        PortletURL action = response.createActionURL();
        action.setPortletMode(PortletMode.VIEW);
        action.setParameter(ADD, "yes");
        request.setAttribute("action", action.toString());
        PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(jspName);
        rd.include(request,response);
    }
}
Avatar billede arne_v Ekspert
13. oktober 2007 - 04:12 #2
Portalen opbygger en screen af et antal pages.

En page består af et antal portlets.

En portlet er defineret i portlet.xml og har et antal views.

Hvert view har sin egen JSP side og en metode i selve portlet Java koden.
Avatar billede arne_v Ekspert
13. oktober 2007 - 04:13 #3
Avatar billede arne_v Ekspert
13. oktober 2007 - 04:14 #4
JSR 168 portlets er en kanon teknologi som slet ikke har fået den opmærksomhed den burde.
Avatar billede arne_v Ekspert
13. oktober 2007 - 04:15 #5
JSF apps kan bruges direkte i en portal - det er krævet i JSF specs.
Avatar billede margitbork Nybegynder
22. oktober 2007 - 09:45 #6
Tak for de mange kommentarer Arne - jeg har holdt efterårsferie, og kommer først nu til at se på de ting du har skrevet til mig. Jeg håber på god fremdrift herefter. ;o)
Avatar billede arne_v Ekspert
22. januar 2008 - 03:13 #7
Efterårsferien må være overstået. Godt og vel.

Jeg smider et svar såfremt jeg har været til hjælp.
Avatar billede margitbork Nybegynder
22. januar 2008 - 07:50 #8
Hej
Vi valgte at arbejde med et værktøj der hedder websphere portal factory, så det har jeg været fuldt beskæftiget med at lære, så jeg har slet ikke fået set på de kommentarer du har givet mig... Men tak for dem alligevel, og selvfølgelig skal du have dine points for indsatsen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester