2012-02-13 43 views
6

Tôi đang theo dõi cùng với cuốn sách Liferay In Action. Tôi đang ở phần mà tôi đang thêm chế độ chỉnh sửa vào một portlet. Portlet được triển khai thành công và tôi đã thêm portlet và bây giờ cuốn sách nói để nhấn vào cờ lê trong portlet và nhấp vào liên kết Preferences nhưng tôi không có liên kết Preferences. Chế độ xem đang hoạt động tốt.Không có chế độ chỉnh sửa nào trong Liferay portlet

Đây là tôi 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>hello-john</portlet-name> 
    <display-name>Hello John</display-name> 
    <portlet-class>com.liferaytest.portlet.HelloJohnPortlet</portlet-class> 
    <init-param> 
     <name>view-jsp</name> 
     <value>/view.jsp</value> 
    </init-param> 
    <init-param> 
     <name>edit-jsp</name> 
     <value>/edit.jsp</value> 
    </init-param> 
    <expiration-cache>0</expiration-cache> 
    <supports> 
     <mime-type>text/html</mime-type> 
     <portlet-mode>view</portlet-mode> 
     <portlet-mode>edit</portlet-mode> 
    </supports> 
    <portlet-info> 
     <title>Hello John</title> 
     <short-title>Hello John</short-title> 
     <keywords>Hello John</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> 

My edit.jsp:

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

<jsp:useBean class="java.lang.String" id="addNameURL" scope="request" /> 

<portlet:defineObjects /> 

<form 
id ="<portlet:namespace />helloForm" 
action="<%= addNameURL %>" 
method="post"> 
<table> 
    <tr> 
     <td>Name:</td> 
     <td><input type="text" name ="username"></td> 
    </tr> 
</table> 
<input type="submit" id="nameButton" title="Add Name" value="Add Name"> 
</form> 

phương pháp doEdit của tôi:

public void doEdit(RenderRequest renderRequest, RenderResponse renderResponse) 
    throws IOException, PortletException { 
    renderResponse.setContentType("text/html"); 
    PortletURL addNameURL = renderResponse.createActionURL(); 
    addNameURL.setParameter("addName", "addName"); 
    renderRequest.setAttribute("addNameURL", addNameURL.toString()); 
    include(editJSP, renderRequest, renderResponse); 
} 
+0

Có thể đặt một bản sửa lỗi tại phương pháp doEdit không? Tôi muốn biết liệu điều khiển có đến với phương thức doEdit hay không. Tiếp theo, tôi cũng muốn bạn thấy bảng điều khiển trong khi triển khai và trong khi đặt portlet vào trang để xem có lỗi nào không. –

+0

Tôi đã gặp vấn đề tương tự và tôi đã tìm thấy sai lầm của mình khi so sánh mã của tôi với mã của tác giả của cuốn sách liferay trong hành động http://www.liferay.com/pt/web/richard.sezov/documents. Bạn có thể acess thư mục "Mã" và tải về plugins-lia.zip, ở đó bạn sẽ tìm thấy mã nguồn này và các mã nguồn khác của cuốn sách. – meurer

Trả lời

3

Để có sở thích (cấu hình) pag e trong portlet của bạn trong Liferay, bạn phải thực hiện giao diện com.liferay.portal.kernel.portlet.ConfigurationAction và cấu hình portlet trong tệp tin liferay-portlet.xml để sử dụng lớp của bạn.

<portlet> 
    <portlet-name>MyPortlet</portlet-name> 
    <configuration-action-class>com.mydomain.myportlet.ClassThatImplementsConfigurationAction</configuration-action-class> 
    <instanceable>false</instanceable> 
    ... 
</portlet> 

Bạn cũng nên lưu ý rằng bên trong lớp đó bạn đang ở trong portlet cấu hình của Liferay, chứ không phải portlet của bạn. Vì vậy, nhận được các tùy chọn như

portletRequest.getPreferences(); 

kết quả trong tùy chọn của portlet cấu hình Liferay.

Để có được sở thích của portlet của bạn thêm phương pháp này để lớp học của bạn

protected PortletPreferences getPortletPreferences(final PortletRequest p_portletRequest) throws Exception { 
    String portletResource = ParamUtil.getString(p_portletRequest, "portletResource"); 
    PortletPreferences prefs = PortletPreferencesFactoryUtil.getPortletSetup(p_portletRequest, portletResource); 
    return prefs; 
} 

và gọi nó là từ phương pháp thực hiện

public void processAction(PortletConfig portletConfig, ActionRequest actionRequest, 
     ActionResponse actionResponse) throws Exception; 

public String render(PortletConfig portletConfig, RenderRequest renderRequest, 
     RenderResponse renderResponse) throws Exception; 
+1

Đó là ConfigurationActionImpl khi bạn đang triển khai trang "Cấu hình" không giống trang Sở thích/Chỉnh sửa? – Jonny

0
<portlet-class>com.liferaytest.portlet.HelloJohnPortlet</portlet-class> 

Trong trường hợp lớp này mở rộng lớp GenericPortlet chắc chắn bạn chuỗi editJSP khớp với "edit-jsp" trong phương thức init của bạn.

public void init() throws PortletException { 
    editJSP = getInitParameter("edit-jsp"); 
    viewJSP = getInitParameter("view-jsp"); 
} 

Nếu MVCPortlet Nó sẽ hiển thị chính xác.

Các hành động sau đây không liên quan trực tiếp đến vấn đề của bạn nhưng có khả năng sự cố có thể được giải quyết bằng cách kiểm tra các bước sau.

  • Sử dụng taglib đúng:
<%@taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> 
  • điểm nó vào .TLD ngay trong web.xml của bạn
  • Bao gồm các libs đúng (util-java. jar, util-taglib.jar, util-bridge.jar, portlet.jar)
  • Shutdown Server
  • Xóa tất cả mọi thứ trong thư mục làm việc (của máy chủ tomcat của bạn)
  • Bắt đầu Server
  • redeploy các portlet
  • Nếu Bạn đang autologed trong, hãy thử relogging.
  • Trình đơn tùy chọn sẽ hiển thị ngay bây giờ.
0

Kiểm tra xem bạn đã thay đổi đúng tệp portlet.xml chưa. Đặc biệt kiểm tra thẻ hỗ trợ.

Các vấn đề liên quan