Liferay中的行为如何运作?

时间:2016-05-13 08:21:13

标签: jsp liferay action portlet

我已经找到了这个问题,但找不到它。

我不知道你,但我不理解Liferay教程中的一点。它太大而且没有解释。这让我对Life如何在Liferay中运作以及一系列麻烦的测试产生了很大的误解。

鉴于此介绍,让我们快点: Liferay的行动如何运作?

  • 我知道我们在方法中有ActionRequests和ActionResponses,但是如何在这些上触发ActionRequest呢?我需要renderURL标签吗?你能举个例子吗?

  • 现在,在上一个问题之后,我应该能够在我的Portlet类控制器中调用一个方法...如何将信息发送到客户端?我猜它正在使用ActionResponse,但我该如何处理呢?

谢谢!

编辑:

我尝试了第一个答案,但我之前尝试过非常相似的东西。它不起作用,但我在控制台上收到此错误;我真的不知道这可能是一个问题:

  

X-Frame-Options拒绝加载:   https://www.google.es/?gfe_rd=ssl&ei=8Sc8V5OkBYGFaLiHksgO没有   允许跨域框架。

1 个答案:

答案 0 :(得分:0)

你的my_action.jsp

中的

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

Hello : <b> <%=request.getAttribute("user-test") %></b>

<portlet:defineObjects />
//The name here is used to call the process action method you define for your action
<portlet:actionURL name="myAction" var="myActionUrl"></portlet:actionURL>



<aui:form action="${myActionUrl}">
    <aui:input name="inputField"></aui:input>
    <aui:button-row>
        <aui:button type="cancel" />
        <aui:button type="submit" value="save" />
    </aui:button-row>
</aui:form>

而不是在portlet类中

public class CustomMVCPortlet extends MVCPortlet {

    public void myAction(ActionRequest actionRequest,
            ActionResponse actionResponse) throws IOException,     PortletException, PortalException, SystemException{
       //get value inserted in form 
        String userName = ParamUtil.get(actionRequest, "inputField", StringPool.BLANK);
       //her you send back your data to use in the jsp
        actionRequest.setAttribute("user-test", userName);
    }

使用actionRequest.setAttribute中的名称和扩展MVCPortlet的类中的方法名称来完成从操作到方法的映射,如果没有方法,则使用<portlet-class>fully.qulified.name</portlet-class>中的标记WEB-INF/portlet.xml定义发现抛出了PortletException