3

あちこち探しても見つからなかったか、検索が不十分でした。とにかく、ここに私の質問があります。liferay MVCでコントローラーからビューjspファイルにデータを表示および/または転送するにはどうすればよいですか? つまり、変数「var」がコントローラ Java クラスの値「This is a variable」を含む場合、jsp ファイルでそれを表示および/またはアクセスするにはどうすればよいですか? または簡単にするために... liferay MVCのjspビューにコントローラーから値を渡すにはどうすればよいですか?

提案をありがとう

4

1 に答える 1

7

使用するフレームワークに応じて、これを達成するためのオプションがいくつかあります。(Liferay MVC ポートレット、Spring ポートレット、JSF)

この回答では、MVC ポートレットを使用していると仮定します。

みんなのお気に入りの例である Hello World を見てみましょう:

public class HelloWorldPortlet extends MVCPortlet{

    @Override
    public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {

        renderRequest.setAttribute("helloMessage", "Hello World");
        super.doView(renderRequest, renderResponse);
    }


}

これはそのままでは機能しません。

portlet.xml の変更で:

<portlet-class>com.liferay.util.bridges.mvc.MVCPortlet</portlet-class>

に:

<portlet-class>**Your Package structure**.HelloWorldPortlet</portlet-class>

view.jsp

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

<portlet:defineObjects />

<%-- Option A --%>
<h1>
    <c:out value="${helloMessage}" />
</h1>

<%-- Option B --%>
<% 
        String message = (String)request.getAttribute("helloMessage");
%>
<h1>
    <%= message %>
</h1>

カスタム アクション:

View.jsp

<portlet:actionURL name="worldHello" var="worldpageURL" />

<aui:a href="${worldpageURL}">World hello</aui:a>

<h2><c:out value="${worldHello}"/></h2>

HelloWorldポートレット

public class HelloWorldPortlet extends MVCPortlet{

    @Override
    public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {

        renderRequest.setAttribute("helloMessage", "Hello World");
        super.doView(renderRequest, renderResponse);
    }



    public void worldHello(ActionRequest request, ActionResponse renderResponse){
        request.setAttribute("worldHello", "World Hello");
    }
}

あなたのコメントに基づいて、次のことを検討するのが最善です:

http://www.liferay.com/community/liferay-projects/liferay-faces/documentation JSFベースのポートレットが将来の主な焦点になる可能性があるため

http://www.liferay.com/community/blogs?p_p_id=115&p_p_lifecycle=0&p_p_state=normal&p_p_mode=view&_115_struts_action=%2Fblogs_aggregator%2Fview_entry&_115_entryId=13443886

于 2012-05-28T09:28:07.297 に答える