J
JJ
Gast
Servus an alle
Also lerne gerade über portlets und hab da son kleines problem. Ich benutze WebSphere Portal server 6.0 und RAD.
Ich kriege es einfach net hin von der View.jsp aus per <jsp:forward page=""> eine andere seite als output zu geben.
Ist ein sehr einfaches problem deshalb regt es mich ja auch so auf. Naja.
Also das ist die standard View.jsp. <jsp:forward page="Output.jsp" /> funktioniert nicht. Also mit <jsp:include funktioniert es aber will halt net includen sondern ne andere seite aufrufen.
Hier das Portlet:
Für jede hilfe bin ich sehr dankbar.
Also lerne gerade über portlets und hab da son kleines problem. Ich benutze WebSphere Portal server 6.0 und RAD.
Ich kriege es einfach net hin von der View.jsp aus per <jsp:forward page=""> eine andere seite als output zu geben.
Ist ein sehr einfaches problem deshalb regt es mich ja auch so auf. Naja.
Code:
<%@page session="false" contentType="text/html" pageEncoding="ISO-8859-1" import="java.util.*,javax.portlet.*,de.changepage.*" %>
<%@taglib uri="http://java.sun.com/portlet" prefix="portlet" %>
<portlet:defineObjects/>
<%
de.changepage.ChangePagePortletSessionBean sessionBean = (de.changepage.ChangePagePortletSessionBean)renderRequest.getPortletSession().getAttribute(de.changepage.ChangePagePortlet.SESSION_BEAN);
%>
<%
String formText = sessionBean.getFormText();
%>
<table border="1" width=400>
<tr>
<td width="300" height=100 align="center">
<form action="<portlet:actionURL/>" method="POST">
First name:
<input type="text" name="<%=de.changepage.ChangePagePortlet.FORM_TEXT%>">
</td>
<td width="300" height=100 align="center">Firstname:<font color="red"><%=formText%></font></td>
</tr>
<tr>
<td width="300" height=100 align="center">even more</td>
<td width="300" height=100 align="center"><input name="<%=de.oliver.changepage.ChangePagePortlet.FORM_SUBMIT%>" type="submit" value="Submit"></form></td>
</tr>
</table>
<%
if( formText.length()>0 ) {
%>
<jsp:forward page="Output.jsp" />
<%
}
%>
Also das ist die standard View.jsp. <jsp:forward page="Output.jsp" /> funktioniert nicht. Also mit <jsp:include funktioniert es aber will halt net includen sondern ne andere seite aufrufen.
Hier das Portlet:
Code:
import java.io.*;
import java.util.*;
import javax.portlet.*;
public class ChangePagePortlet extends GenericPortlet {
public static final String JSP_FOLDER = "/_ChangePage/jsp/"; // JSP folder name
public static final String VIEW_JSP = "ChangePagePortletView"; // JSP file name to be rendered on the view mode
public static final String SESSION_BEAN = "ChangePagePortletSessionBean"; // Bean name for the portlet session
public static final String FORM_SUBMIT = "ChangePagePortletFormSubmit"; // Action name for submit form
public static final String FORM_TEXT = "ChangePagePortletFormText"; // Parameter name for the text input
public static final String OUTPUT = "Output";
public void init() throws PortletException{
super.init();
}
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
// Set the MIME type for the render response
response.setContentType(request.getResponseContentType());
// Check if portlet session exists
ChangePagePortletSessionBean sessionBean = getSessionBean(request);
if( sessionBean==null ) {
response.getWriter().println("[b]NO PORTLET SESSION YET[/b]");
return;
}
// Invoke the JSP to render
PortletRequestDispatcher rd = getPortletContext().getRequestDispatcher(getJspFilePath(request, VIEW_JSP));
rd.include(request,response);
}
public void processAction(ActionRequest request, ActionResponse response) throws PortletException, java.io.IOException {
if( request.getParameter(FORM_SUBMIT) != null ) {
// Set form text in the session bean
ChangePagePortletSessionBean sessionBean = getSessionBean(request);
if( sessionBean != null )
sessionBean.setFormText(request.getParameter(FORM_TEXT));
}
}
private static ChangePagePortletSessionBean getSessionBean(PortletRequest request) {
PortletSession session = request.getPortletSession();
if( session == null )
return null;
ChangePagePortletSessionBean sessionBean = (ChangePagePortletSessionBean)session.getAttribute(SESSION_BEAN);
if( sessionBean == null ) {
sessionBean = new ChangePagePortletSessionBean();
session.setAttribute(SESSION_BEAN,sessionBean);
}
return sessionBean;
}
private static String getJspFilePath(RenderRequest request, String jspFile) {
String markup = request.getProperty("wps.markup");
if( markup == null )
markup = getMarkup(request.getResponseContentType());
return JSP_FOLDER + markup + "/" + jspFile + "." + getJspExtension(markup);
}
private static String getMarkup(String contentType) {
if( "text/vnd.wap.wml".equals(contentType) )
return "wml";
else
return "html";
}
private static String getJspExtension(String markupName) {
return "jsp";
}
}
Für jede hilfe bin ich sehr dankbar.