Render()的方法不同的反应

时间:2016-08-29 12:22:23

标签: liferay liferay-6 portlet

我的render()方法没有代码。

我有这个动作方法:

@ProcessAction(name = "viewBook")
public void viewBook(ActionRequest actionRequest,ActionResponse actionResponse) throws SystemException, PortalException {
    long bookId = ParamUtil.getLong(actionRequest, "bookId");
    Book book = BookLocalServiceUtil.getBook(bookId);
    actionRequest.setAttribute(FinalStrings.BOOK_ENTRY, book);
    actionResponse.setRenderParameter("jspPage", "/html/LibraryPortlet/view_book.jsp");

如何将此“GET”方法重写为render()方法?我的意思是我需要运行

public void render(RenderRequest renderRequest, RenderResponse rendeResponse){
    super.render(renderRequest, renderResponse) 
}

在默认情况下

 public void render(RenderRequest renderRequest, RenderResponse rendeResponse){

    \\THIS CODE IS NOT WORKING, IT'S JUST TO SHOW WHAT I WANT!

    long bookId = ParamUtil.getLong(actionRequest, "bookId");
    Book book = BookLocalServiceUtil.getBook(bookId);
    actionRequest.setAttribute(FinalStrings.BOOK_ENTRY, book);
    actionResponse.setRenderParameter("jspPage", "/html/LibraryPortlet/view_book.jsp");

当我需要使用viewBook()方法时。我如何参数化(?)render()方法?

更新

有关详细信息,我附上了一个屏幕截图:

It's my portlet

同时在我的action.jsp中:

<liferay-ui:icon-menu>
     <portlet:actionURL name="deleteBook" var="deleteURL">
         <portlet:param name="bookId"
            value="${String.valueOf(book.getBookId())}" />
     </portlet:actionURL>

     <portlet:renderURL name="viewBook" var="viewURL">
        <portlet:param name="bookId"
            value="${String.valueOf(book.getBookId())}" />
     </portlet:renderURL>

     <portlet:renderURL  var="editBookURL" name="viewEdit">
        <portlet:param name="bookId"    value="${String.valueOf(book.getBookId())}" />
     </portlet:renderURL>

<liferay-ui:icon image="add" message="View" url="${viewURL.toString()}" />
<liferay-ui:icon image="add" message="Edit" url="${editBookURL.toString()}" />
<liferay-ui:icon-delete image="delete" message="Delete" url="${deleteURL.toString()}" />

在我的view_book.jsp中:

<%@page import="com.softwerke.FinalStrings"%>
<%@page import="com.softwerke.model.Book"%>
<%@page import="com.softwerke.service.BookLocalServiceUtil"%>
<%@page import="com.liferay.portal.kernel.util.ParamUtil"%>
<%@ include file="/html/init.jsp"%>

<portlet:renderURL var="backURL">
    <portlet:param name="jspPage" value="/html/view.jsp"/>
</portlet:renderURL>

<liferay-ui:header backURL="${backURL}" title="Back" />

<%
    Book book = (Book) request.getAttribute(FinalStrings.BOOK_ENTRY);
%>


<aui:form>
     <aui:model-context bean="${book}" model="${Book.class}" />
     <aui:input name="bookName" label="Book Name" disabled="true"/>
     <aui:input type="textarea" name="description" label="Description"  disabled="true"/>
     <aui:input name="authorName" label="Author Name" disabled="true"/>
     <aui:input name="price" label="Price" disabled="true"/>        
</aui:form>

根据我的任务,我可以 在此处使用操作网址。我该怎么办???

1 个答案:

答案 0 :(得分:1)

您可以向渲染器发送命令参数,因此您可以根据命令将逻辑拆分为两个或更多渲染方法,或者可以更轻松地调用mvcPath而无需在render()中实现任何内容。在jsp中包含这样的内容,包括您的书籍列表:

<portlet:renderURL var="myBookURL">
    <portlet:param name="mvcPath" value="/view_book.jsp" />
    <portlet:param name="bookId" value="<%= someBookId %>" />
</portlet:renderURL>

<a href="<%= myBookURL %>">View My Book</a>

你只需要一个类似于:

的view_book.jsp
<%
long bookId = ParamUtil.getLong(request, "bookId");
Book book = BookLocalServiceUtil.getBook(bookId);
%>

希望它有所帮助。