Я использую фреймворк python и webapp в движке приложения для backend и flex 4 для интерфейса. Я хотел бы передать строку формы бэкенд к переднему концу, поэтому я пишу следующий код в main.py:Как передать данные из приложения Google App Engine (Python) в приложение Flex 4
class MainPage(webapp.RequestHandler):
def get(self):
userVO = "test"
template_values = {
'url': self.request.uri,
'userVO': userVO,
}
self.response.out.write(template.render("templates/index.html", template_values))
И в Flex 4, у меня есть следующий код:
var user:String = FlexGlobals.topLevelApplication.parameters['userVO'];
Однако я получаю нулевое значение.
Прошу совета, как исправить. Благодарю.
Edit: 25 февраля
Спасибо за людей, которые отвечают на мой вопрос. По моему вопросу, я пытаюсь выяснить, как движок приложения python передает данные в приложение flex, когда он визуализирует html-файл, содержащий SWF-файл. Возможно, есть что-то, что я могу установить в main.py, swfobject.js или index.html для выполнения моей задачи.
Я знаю, как использовать Pyamf в качестве шлюза для обслуживания приложения flex, я думаю, как сделать приложение более простым.
Спасибо.
Edit: 28 февраля
Роберт, то index.html стандартный файл, созданный в Flash Builder 4. Желание вы можете дать мне несколько советов, как изменить его. Ниже приведен файл:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- saved from url=(0014)about:internet -->
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<!--
Smart developers always View Source.
This application was built using Adobe Flex, an open source framework
for building rich Internet applications that get delivered via the
Flash Player or to desktops via Adobe AIR.
Learn more about Flex at http://flex.org
// -->
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
HTML, тело {высота: 100%; } тело {margin: 0; обивка: 0; переполнение: скрытый; выравнивания текста: центр; }
#flashContent {дисплей: нет; }
<script type="text/javascript" src="/js/swfobject.js"></script>
<script type="text/javascript">
<!-- For version detection, set to min. required Flash Player version, or 0 (or 0.0.0), for no version detection. -->
var swfVersionStr = "10.0.0";
<!-- To use express install, set to playerProductInstall.swf, otherwise the empty string. -->
var xiSwfUrlStr = "/swfs/playerProductInstall.swf";
var flashvars = {};
var params = {};
params.quality = "high";
params.bgcolor = "#ffffff";
params.allowscriptaccess = "sameDomain";
var attributes = {};
attributes.id = "index";
attributes.name = "index";
attributes.align = "middle";
swfobject.embedSWF(
"/swfs/index.swf", "flashContent",
"100%", "100%",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);
swfobject.createCSS ("# flashContent", "дисплей: блок; выравнивания текста: слева;");
Для просмотра этой страницы убедитесь, что версия Adobe Flash Player 10.0.0 или выше установлен.
<noscript>
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%" id="index">
<param name="movie" value="index.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<!--[if !IE]>
<object type="application/x-shockwave-flash" data="index.swf" width="100%" height="100%">
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<param name="allowScriptAccess" value="sameDomain" />
<![endif]-->
<!--[if gte IE 6]>
<p>
Either scripts and active content are not permitted to run or Adobe Flash Player version
10.0.0 or greater is not installed.
</p>
<![endif]-->
<a href="http://www.adobe.com/go/getflashplayer">
<img src="https://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash Player" />
</a>
<!--[if !IE]>
</object>
<![endif]-->
</object>
</noscript>
Спасибо, Роберт.
Редактировать: 7 Mar.
Роберт,
См http://help.adobe.com/en_US/Flex/4.0/html/WS2db454920e96a9e51e63e3d11c0bf626ae-7feb.html
Перед тем, как опубликовать вопрос здесь, я попытался следующий код:
В index.html,
<%
String user = (String) request.getParameter("userVO");
%>
, а также
flashvars.userVO = "<%= user %>";
В результате, я получаю:
< пользователь
Вы знаете, почему я не могу получить правильные данные. Благодарю.
Спасибо, Роберт, я знаю, что могу настроить Flashvars для выполнения задачи, и я пробовал ее много раз. Но это не успех. Для liveocs, как flex 3, так и 4, я уже читал это несколько раз. – michael
Можете ли вы разместить содержимое своего шаблона index.html? –
Роберт, я размещаю файл в вопросе. – michael