簡體   English   中英

創建liferay Portlet-如何通過View.jsp將數據從Java類傳遞到myScript.js

[英]Creating liferay portlet - How to pass data to to myScript.js from Java class via view.jsp

我正在使用Liferay Portlet,但遇到一些問題。 我想要實現的是訪問在Java類中呈現頁面時創建的一些數據,並將其傳遞給我的JavaScript。 我認為我的問題是我對變量范圍的理解。

我已經弄清楚了如何通過這兩個將變量傳遞給view.jsp文件中的JavaScript:

創建Liferay Portlet-如何將數據從Java類傳遞到view.jsp?

http://www.opensource-techblog.com/2012/08/creating-custom-liferay-mvc-portlet.html

我現在所擁有的:

java-servlet類:

public class TestPortlet extends MVCPortlet {

  @Override
  public void doView(RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException {
    renderRequest.setAttribute("test_variable_actionRequest_setAttribute", "TestValue");
    super.doView(renderRequest, renderResponse);
  }
}

我的view.jsp:

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

<portlet:defineObjects />
<%
  String testVariable = (String)renderRequest.getAttribute("test_renderRequest_setAttribute");
%>

<b><%= testVariable %></b>
<script type="text/javascript">
  $(document).ready(function() {
    myNamespace.control.init();
  });
</script>

在這里可以打印testVariable,將“ TestValue”打印為唯一輸出。

我的control.js:

var myNamespace = myNamespace || {};
myNamespace.control = (function($, OL, ns) {
  "use strict";
  function init() {
    //How on earth do I access the variable here?
    console.log(testVariable); // error: testVariable not defined
    console.log(renderRequest.getAttribute("test_renderRequest_setAttribute")); // error: renderRequest not defined
  }      
  // public interface
  return {
    init : init,
  };
}());

我在這里想的是,我顯然對這些變量和renderRequest對象的作用范圍完全迷失了。 我敢肯定解決方案很簡單,但似乎找不到。

您在上面所做的不是創建名為testVariable的javascript變量。 您只是將HTML中Java變量testVariable的值打印為粗體文本,而不是打印到javascript中。

我認為您想要的是:

 <script type="text/javascript">
   var testVariable  = "<%= testVariable %>";
   $(document).ready(function() {
     myNamespace.control.init();
   });
 </script>

至於在javascript中使用* renderRequest.getAttribute(“ test_renderRequest_setAttribute”))*,我對liferay不太了解,所以我不知道是否通過liferay的一部分javascript庫在Java語言方面定義了renderRequest,但是憑直覺,我猜想它僅在Java方面定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM