Render() 的方法不同的反应

Render()'s Method different reactions

我有没有代码的 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() 方法?


更新:

有关详细信息,我附上了一张截图:

同时在我的 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>

根据我的任务,我可以在这里使用操作URL。我该怎么办???

您可以将命令参数发送到渲染器,这样您就可以根据命令将逻辑拆分为两个或更多渲染方法,或者更简单地调用 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);
%>

希望对您有所帮助。