我已经找到了这个问题,但找不到它。
我不知道你,但我不理解Liferay教程中的一点。它太大而且没有解释。这让我对Life如何在Liferay中运作以及一系列麻烦的测试产生了很大的误解。
鉴于此介绍,让我们快点: Liferay的行动如何运作?
我知道我们在方法中有ActionRequests和ActionResponses,但是如何在这些上触发ActionRequest呢?我需要renderURL标签吗?你能举个例子吗?
现在,在上一个问题之后,我应该能够在我的Portlet类控制器中调用一个方法...如何将信息发送到客户端?我猜它正在使用ActionResponse,但我该如何处理呢?
谢谢!
编辑:
我尝试了第一个答案,但我之前尝试过非常相似的东西。它不起作用,但我在控制台上收到此错误;我真的不知道这可能是一个问题:
X-Frame-Options拒绝加载: https://www.google.es/?gfe_rd=ssl&ei=8Sc8V5OkBYGFaLiHksgO没有 允许跨域框架。
答案 0 :(得分:0)
<%@ 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