2016-05-13 13 views
0

Ich bin neu bei Liferay, und ich bin ein wenig verwirrt, wie es funktioniert. Es fällt mir wirklich schwer, seine Struktur zu verstehen (das mache ich normalerweise nicht!).Liferay Aktion funktioniert nicht

Ich versuche nur ein einfaches Portlet zu erstellen, das von diesem Punkt aus skaliert werden kann und Portlets programmieren kann, auch wenn es auf eine einfache und archaische Art und Weise ist (ist mir egal; ein paar Tage). Ein wichtiger Punkt, um dies zu erreichen, ist in der Lage, Aktionen zu verwenden.

Überprüfen Sie diesen Code. Ich heruntergeladen dieses Beispiel von einer Website, aber es funktioniert nicht für mich (ich benutze Liferay 6.2): ​​

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

User Name is : <b> ${userName}</b> 

<portlet:defineObjects /> 

<portlet:actionURL name="addName" var="addNameUrl"></portlet:actionURL> 
<br> 
<form action="${addNameUrl}" method="post"> 
<input type="text" name="userName"><br> 
<input type="submit"> 
</form> 

Dies ist mein Controller-Portlet:

public class CustomMVCPortlet extends MVCPortlet { 

    @ProcessAction(name="addName") 
    public void addName(ActionRequest actionRequest, 
      ActionResponse actionResponse) throws IOException,  PortletException, PortalException, SystemException{ 

     String userName = ParamUtil.get(actionRequest, "userName", StringPool.BLANK); 
     actionRequest.setAttribute("userName", userName); 
    } 

Dies soll auf diese Weise arbeiten: Sie schreibe einen String in das Eingabefeld, klicke auf den Submit Button und was du geschrieben hast sollte in der Ansicht als "User name is: whatYouWrote" erscheinen. Aber ich sehe nichts mehr als das:

Irgendwie funktionieren hier Aktionen nicht richtig. Welche Veränderung sollte ich durchführen, um das zu erreichen? Kann mir jemand auf einfache Weise sagen, wie diese Aktionen funktionieren?

+0

Hallo. Könnten Sie die Frage bearbeiten und das Bild des Ergebnisses hinzufügen? Gibt es einen Stacktrace in Ihrem Protokoll oder versuchen Sie sogar zu debuggen, wenn die Aktion verarbeitet wurde? – Jorge

+0

Was meinen Sie mit "nicht richtig funktionieren"? Wird die Aktion überhaupt nicht aufgerufen? BTW. Haben Sie den Verweis auf die CustomMVCPortlet-Klasse auch zur Datei portlet.xml hinzugefügt? –

Antwort

0

diesen Code Versuchen Sie, bevor diese versuchen, ich hoffe, dass Sie mit allen Konfiguration tat Datenbank und alle in Bezug auf -

Dies ist Ihre JSP-Seite:

<% 
    PortletURL addNameURL = renderResponse.createActionURL(); 
    addNameURL.setParameter(
     ActionRequest.ACTION_NAME, "addName"); 
%> 
<form name="fm" action="<%= addNameURL.toString() %>" method="POST"> 

    <input name="userName" label="User Name"/> 

    <button type="submit" value="save"/> 
</form> 

Dies ist mein Controller-Portlet:

public class CustomMVCPortlet extends MVCPortlet { 

public void addName(ActionRequest actionRequest, 
     ActionResponse actionResponse) throws IOException, PortletException  { 

    String userName= ParamUtil.getString(actionRequest, "userName"); 
// 1. Instantiate an empty object of type (entityName)Impl 
    entityName xyz = new entityName)Impl; 
// 2. Generate a unique primary key to be set 
    long employeeId = 0l; 
    try { 
    employeeId = CounterLocalServiceUtil.increment(); 
    } catch (SystemException e) { 
    e.printStackTrace(); 
} 
// 3. Set the fields for this object 
    xyz .setEmployeeId (employeeId); 
    xyz .setUserName(userName); 
// 4. Call the Service Layer API to persist the object 
try { 
    xyz = (entityName)LocalServiceUtil.add(entityName)(xyz); 
} 
catch (SystemException e) { 
    e.printStackTrace(); 
} 
Verwandte Themen