# Liferay Portlet funktioniert nicht :(



## 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

```
<%@ 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


```
public class Test extends GenericPortlet {

	
	
	@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>
```


----------



## z-mon (28. Mai 2012)

Hallo Gongo82,

ohne nun deinen Code studiert zu haben: Liferay bietet eine Eclipse Erweiterung namens "Liferay IDE" im Marketplace an womit du wunderbar und ohne große Probleme Sampledateien erstellen kannst. Das Plugin übernimmt dabei sämtliche Einträge in der web.xml, liferay-display.xml, portlet.xml und und und. 
Die automatische Codegenerierung minimiert vorab schon einmal sämtliche kleinen Fehler die man schnell übersieht. Übder den automatisch generierten Controller sowie die JSP Datei wirst du anschließend ohne großen Aufwand dein Formular basteln können.

Sollte es dennoch weiterhin Probleme mit deinem Formular geben, können wir gerne nochmals zusammen drüber schauen.

Noch ein Tip: Für die Actionverarbeitung rate ich dir dazu die Annotation Variante mal näher anzuschauen. Durch die Annotations erreichst du unter anderem eine wesentlich bessere Übersichtlichkeit in deinem Controller.

Schöne Grüße


----------

