liferay MVCActionCommand的用法及例子

來源:互聯網
上載者:User

標籤:傻傻   render   建立   後台   gre   語言   except   自己   XML   

在liferay7中把portlet中的控制層拆成了3個部分:

1.MVCActionCommand

2.MVCRenderCommand

3.MVCRecourceCommand

至於為什麼要拆出來了,之前我們寫actionURL,一個JSP中可能有很多actionUrl,都是把它寫在mvcPortlet類中,當代碼量變大,不便於管理,且結構不是特別清晰。

下面就簡單介紹一下MVCActionCommand的用法,附上一個簡單的小例子Say Hi to U portlet

1.建一個普通的mvc-portlet,之前以為mvc-action-command是獨立存在的,也是傻傻的^^

這個是通過liferay ide外掛程式自己產生出來的模板,隨便解釋一下,@Component裡面property屬性的用法。

1、com.liferay.portlet.display-category:此處是控制的在Portlet管理處,我們添加Portlet時,Portlet是在哪個分類下顯示的。如所示,我們這裡配置的是在category.sample下面,所以我們點擊添加時可以在應用程式的樣本下面看到。category.sample是國際化的一個key值,如果我們想自己定義分類,可以修改此值即可。

2、com.liferay.portlet.instanceable:此配置意思是是否允許portlet在同一個頁面上添加多次,預設值是true,我們有些情境下可能只希望同一個Portlet,在同一個頁面只允許添加一次,則將此改為false即可。看portlet前面是一個小圓圈的表示只能添加一次,是九個小方塊的表示可以添加多次。

3、javax.portlet.display-name:顯示名稱,也就是我們上面看到的Portle的名稱。

4、javax.portlet.init-param.template-path,此值預設為“/”,而且也只能是“/”,在MVCPortlet類裡已經限制了,如果不是會報錯。

5、javax.portlet.init-param.view-template=/view.jsp,portlet被拖到Liferay頁面上後預設執行的是哪個JSP,此路徑是相對於META-INF/resource而言,我們可以在此修改相應的JSP路徑和名稱。

6、javax.portlet.resource-bundle=content.Language語言的國際化支援檔案,非必須的。如果要讓portlet支援國際化,則需要。可在Resource/content的目錄裡面建立language_zh_CN.porperties檔案,在裡面寫中文的國際化。此內容後面有部落格詳細說明。

7、javax.portlet.security-role-ref=power-user,user:將portlet部署後,此portlet預設哪些角色有將此portlet添加到頁面的許可權。

注意:此處的配置不只是只有這些,以前版本的portlet.xml、liferay-portlet.xml、liferay-display.xml的配置屬性都已經挪到了這裡,所以如果看到教程說的是對應的配置,在7.0裡面都是添加到此處。

更多的配置可以參考源碼裡面的類:PortletPropertyValidator

(此處的解釋參考胡啟穩老師的部落格)

 

2.然後我的目的是做一個portlet,你輸入名字之後,它會向你問好,效果如下:

3. 首先,我們要做的是要在view.jsp檔案中寫一個表單讓使用者可以讓使用者輸入值,同時在使用者點擊按鈕時觸發actionRequest處理傳回來的資料。

<%@ include file="/init.jsp" %><portlet:actionURL name="greetToU" var="myCommand"></portlet:actionURL><form method="post" action = "${myCommand}"><p>What‘s your name?</p><input type="text" name="name"><input type="submit" value="tell me"></form>${greet}

4.重點來了,如何把你寫的背景actionCommand與前台的JSP聯絡起來,同時又與你的portlet聯絡起來呢?

先看代碼,然後再解釋:

package mvc.portlet.portlet;import com.liferay.portal.kernel.portlet.bridges.mvc.BaseMVCActionCommand;import com.liferay.portal.kernel.portlet.bridges.mvc.MVCActionCommand;import com.liferay.portal.kernel.util.ParamUtil;import javax.portlet.ActionRequest;import javax.portlet.ActionResponse;import org.osgi.service.component.annotations.Component;@Component(immediate = true,property = {        "javax.portlet.name=mvc_Portlet",        "mvc.command.name=greetToU"},service = MVCActionCommand.class)public class MyActionCommand extends BaseMVCActionCommand {    @Override    protected void doProcessAction(ActionRequest actionRequest, ActionResponse actionResponse) throws Exception {        String name = ParamUtil.getString(actionRequest, "name");        actionRequest.setAttribute("greet","Hi " + name+ ", nice to meet u!");    }}

注意上面那兩個參數,portlet.name把它與portlet聯絡起來;command.name把它與jsp上的actionUrl聯絡起來。

然後部署到7.0的portal上去就好啦,理清思路是不是簡單多了呢,哈哈

liferay MVCActionCommand的用法及例子

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.