![](/img/trans.png)
[英]Liferay autofields - how to pass variables from edit.jsp to view.jsp?
[英]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.