Я использую python и webapp framework в движке приложения для бэкэнда и flex 4 для фронтэнда.
Я хотел бы передать бэкэнд строковой формы во внешний интерфейс, поэтому я пишу следующий код в main.py:
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'];
Однако я получаю нулевое значение.
Пожалуйста, совет, как это исправить. Спасибо.
Редактировать: 25 февраля.
Спасибо за людей, которые отвечают на мой вопрос. На мой вопрос я попытаюсь выяснить, как движок приложения python передает данные в flex-приложение, когда оно отображает html-файл, содержащий swf-файл. Может быть, есть что-то, что я могу установить в main.py, swfobject.js или index.html для выполнения моей задачи.
Я знаю, как использовать Pyamf в качестве шлюза для обслуживания гибкого приложения, я думаю, как сделать приложение более простым.
Спасибо.
Редактировать: 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, body {height: 100%; }
body {margin: 0; обивка: 0; переполнение: скрытый; выравнивания текста: центр; }
#flashContent {display: none; }
<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", "display: block; выравнивание текста: слева;");
Для просмотра этой страницы убедитесь, что версия Adobe Flash Player
10.0.0 или выше установлен.
<! - [if! IE]>
<! [ENDIF] ->
<! - [if gte IE 6]>
Сценарии и активный контент запрещены к запуску, либо версия Adobe Flash Player
10.0.0 или выше не установлен.
<! [ENDIF] ->
<!--[if !IE]>
<![endif]-->
Thanks, Robert.
Edit: 7 Mar.
Robert,
Refer to http://help.adobe.com/en_US/Flex/4.0/html/WS2db454920e96a9e51e63e3d11c0bf626ae-7feb.html
Прежде чем разместить вопрос здесь, я попробовал следующий код:
В index.html,
<%
String user = (String) request.getParameter("userVO");
%>
а также
flashvars.userVO = "<%= user %>";
Результат я получаю:
<пользователь </p>
Вы знаете, почему я не могу получить правильные данные. Спасибо.