2012-02-13 21 views
6

私はLiferay In Actionの本をフォローしています。私はポートレットに編集モードを追加しています。ポートレットが正常に展開され、ポートレットを追加しましたが、今ではポートレット内のレンチをクリックして「環境設定」リンクをクリックすると表示されますが、「環境設定」リンクはありません。ビューは正常に動作しています。ここでLiferayポートレットの編集モードがありません

は私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> 

マイ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> 

マイdoEdit方法:

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

doEditメソッドでデバッグすることはできますか?私はコントロールがdoEditメソッドに来ているかどうかを知りたい。次に、デプロイ時にコンソールを表示し、ページにポートレットを配置してエラーがないかどうかを確認します。 –

+0

私は同じ問題を抱えていました。自分のコードと実際の書籍ライフラー著者のコードを比較して間違いを見つけました。http://www.liferay.com/pt/web/richard.sezov/documentsあなたは "Code"というフォルダにアクセスしてplugins-lia.zipをダウンロードすることができます。そこには、これと他のソースコードがあります。 – meurer

答えて

3

設定(コンフィギュレーション)を持っているPAG Liferayのポートレットでcom.liferay.portal.kernel.portlet.ConfigurationActionインターフェースを実装し、liferay-portlet.xmlにポートレットを構成してクラスを使用する必要があります。

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

また、そのクラス内であなたは、Liferayの設定ポートレットでは、ポートレットではないことに注意する必要があります。だから、Liferayの-Sの設定ポートレットの設定で

portletRequest.getPreferences(); 

結果のような嗜好を取得。

取得するには、ポートレットの好みは、あなたのクラス

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; 
} 

にこのメソッドを追加し、このクラスはgenericportletクラスは確認して拡張する場合の実装方法

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

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

Preferences/Editページと同じではないConfigurationページを実装しているときは、ConfigurationActionImplですか? – Jonny

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

からそれを呼び出すあなたのeditJSP文字列は、initメソッドの "edit-jsp"と一致します。

MVCPortletが正しく表示されている必要があります。

次の操作は、問題に直接関連するものではありませんが、以下の手順を確認することで問題が解決する可能性があります。

  • 正しいのtaglibを使用する:あなたのweb.xmlの右.TLDへ
<%@taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %> 
  • ポイントを
  • UTIL-javaの(正しいLIBSを含めます。 jar、util-taglib.jar、util-bridge.jar、ポートレット。瓶)
  • シャットダウン
  • は、Tomcatサーバーの作業用フォルダ()の下ですべてのものを削除しますサーバー
  • があなたのサーバー
  • 再デプロイポートレット開始
  • あなたがでautologedしている場合は、reloggingしてみてください。
  • 環境設定メニューが表示されるはずです。
0

portlet.xmlファイルを正しく変更したかどうか確認してください。特にサポートタグを確認してください。

関連する問題