# Liferay Portlet



## Gongo82 (26. Mai 2012)

Hallo Leute ,

bin Neuling in der Portlet Welt und versuche ein kleines Portlet zu programmieren....wäre super, wenn mir jemand helfen könnte, ich bekomme es einfach nicht zum laufen...

Ich arbeite mit Eclipse und als Portalserver verwende ich Liferay(Tomcat)...

ich wollte ein Portlet erstellen das ein einfaches Textfeld besitzt und einen Ok Button...dieses Textfeld soll ausgelesen werden und das was man in das Textfeld reingeschrieben hat, soll auf einer zweiten Jsp ausgegeben werden...Wenn ich das Portlet laufen lasse, wird es nicht angezeigt( .....ist temporär nicht erreichbar)....

Hier die Auszüge aus meinem Portlet...

die jsp´s befinden sich im WEB-INF Verzeichnis
view.jsp

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

<portlet:defineObjects />


<br>Hier können Sie Musik-Künstler abfragen...

  <html>
  <body>
  
  <form name= "Formular" action= "<portlet:actionURL>
<portlet:param name ="jspPage" value = "view.jsp"/>
</portlet:actionURL>" method = "POST">
  
  <table>
       <tr>
       
         <td>Name:</td>
         <td><input type="text" name="name" size="20"></td>
         <td><input type= "submit" value="ok"/></td>
         
       </tr>
      
     </table>
    </form>
  </body>
</html>
```

die nun folgende jsp soll den Wert ausgeben der in dem Textfeld eingegeben wurde: zweiteSeite.jsp


```
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Zweite Seite</title>
</head>
<body>

<% 

String nameAuslesen=request.getParameter("name");

%>

Sie haben folgendes eingegeben: <%= nameAuslesen %>


</body>
</html>
```

und das ist mein Controller

```
@Override
    public final void processAction(final ActionRequest request,
            final ActionResponse response) throws PortletException, IOException 
            {
                
    String jspPage = request.getParameter("jspPage");
        
        if (jspPage.equals("view.jsp"))
        { 
            
        String name = request.getParameter("name");
        response.setRenderParameter(name, name);
        
        response.setRenderParameter(jspPage, "zweiteseite.jsp");
        }
        else if(jspPage.equals("zweiteseite.jsp")) {
            
            //hier möchte ich wieder zurück zur startpage
            
            response.setRenderParameter(jspPage, "view.jsp");
        }
        }
 
        
        protected void doView(RenderRequest request, RenderResponse response) 
            throws PortletException, IOException {
        
        PortletContext context = getPortletContext();
        PortletRequestDispatcher dispatcher 
        = context.getRequestDispatcher( "/view.jsp" );
        dispatcher.include( request, response );
        }
}
```

Auszug aus der web.xml

```
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>MusicFinderService-portlet</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <jsp-config>
  	<taglib>
  		<taglib-uri>http://java.sun.com/portlet_2_0</taglib-uri>
  		<taglib-location>
  			/WEB-INF/tld/liferay-portlet.tld
  		</taglib-location>
  	</taglib>
  </jsp-config>
</web-app>
```

Auszug aus der portlet.xml

```
<?xml version="1.0"?>

<portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd http://java.sun.com/xml/ns/portlet/portlet-app_2_0.xsd" version="2.0">
	<portlet>
		<portlet-name>MusicFinderService</portlet-name>
		<display-name>MusicFinderService</display-name>
		<portlet-class>Test</portlet-class>
		<init-param>
			<name>view-template</name>
			<value>view.jsp</value>
		</init-param>
		<expiration-cache>0</expiration-cache>
		<supports>
			<mime-type>text/html</mime-type>
		</supports>
		<portlet-info>
			<title>MusicFinderService</title>
			<short-title>MusicFinderService</short-title>
			<keywords>MusicFinderService</keywords>
		</portlet-info>
		<security-role-ref>
			<role-name>administrator</role-name>
		</security-role-ref>
		<security-role-ref>
			<role-name>guest</role-name>
		</security-role-ref>
		<security-role-ref>
			<role-name>power-user</role-name>
		</security-role-ref>
		<security-role-ref>
			<role-name>user</role-name>
		</security-role-ref>
	</portlet>
```
Auszug aus der liferay-portlet.xml

```
<?xml version="1.0"?>
<!DOCTYPE liferay-portlet-app PUBLIC "-//Liferay//DTD Portlet Application 6.1.0//EN" "http://www.liferay.com/dtd/liferay-portlet-app_6_1_0.dtd">

<liferay-portlet-app>
	<portlet>
		<portlet-name>MusicFinderService</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>MusicFinderService-portlet</css-class-wrapper>
	</portlet>
<role-mapper>
		<role-name>administrator</role-name>
		<role-link>Administrator</role-link>
	</role-mapper>
	<role-mapper>
		<role-name>guest</role-name>
		<role-link>Guest</role-link>
	</role-mapper>
	<role-mapper>
		<role-name>power-user</role-name>
		<role-link>Power User</role-link>
	</role-mapper>
	<role-mapper>
		<role-name>user</role-name>
		<role-link>User</role-link>
	</role-mapper>
</liferay-portlet-app>
```

Auszug aus der liferay-display.xml

```
<?xml version="1.0"?>
<!DOCTYPE display PUBLIC "-//Liferay//DTD Display 6.1.0//EN" "http://www.liferay.com/dtd/liferay-display_6_1_0.dtd">

<display>
	<category name="category.sample">
		<portlet id="MusicFinderService" />
		<portlet id="webserviceportlet"></portlet>
	</category>
</display>
```


----------



## execute (3. Jul 2012)

huhu,

eine Frage, wird denn wenigstens ein "Hello World" angezeigt? 
Das sollte meiner Meinung zuerst mal laufen und dann, jeden Tag ein bisschen mehr.


----------



## z-mon (3. Jul 2012)

Hallo Gongo82,

mit Hilfe der Liferay IDE (verfügbar über den Eclipse Marketplace) ist die Grundfunkionalität (z.B. ein HelloWorld) schon einmal ziemlich leicht zu erreichen. Durch das Anlegen eines Portlets werden dir alle Konfigurationsdateien, eine Test-JSP und ein Controller in deinem Projekt angelegt.
Anschließend ein Formular hinzuzufügen ist das kleinere Problem.

Happy coding


----------



## PollerJava (5. Jul 2012)

Meine Frage wäre, was habt ihr da für einen Tomcat laufen, ist das ein spezieller Tomcat???


----------



## z-mon (5. Jul 2012)

Hallo PollerJava,

auf der Downloadseite von Liferay gibt es verschiedene Bundlevarianten - unter anderem auch mit dem Tomcat. Es ist grundsätzlich auch zu bevorzugen den mitgelieferten Tomcat zu nutzen, wobei du theoretisch auch eine andere Version einsetzen könntest.


----------

