在JS中获取portlet会话
Getting portlet session in JS
嗨,我正在尝试在JS变量中获取portlet会话。我该怎么办
request.getPortletSession().getAttribute("countryList"); //This is my .java class code
我需要在JS中获取相同的?
您不能通过javascript访问java会话。
一种解决方案是将java对象序列化为json字符串,并将其保存到会话中(如果对象为null,只需保存一个等于"null"的字符串)
getPortletSession().setAttribute("countryListJson", JSONUtil.toJSON(yourObject));
然后你可以使用
<script type="text/javascript">
var obj = <%=request.getPortletSession().getAttribute("countryListJson")%>;
</script>
另一个解决方案是为ajax调用提供一个json填充控制器方法。并返回如下字符串:
return "var countryList = " + JsonUtil.toJson(request.getPortletSession().getAttribute("countryList")) +";"
然后您应该将此方法映射到一个url,例如"/contryList.do"并且在您的页面中:
<script type="text/javascript" src="<%=request.getContextPath()%>/contryList.do"></script>
<script type="text/javascript">
alert(contryList);
</script>
据我所知,您需要在一些JS var中放入countryList(来自控制器)。您不需要在JS中获取portlet会话,您应该能够执行以下操作:
我设法使用scriptlets和usebean从controller获得了一些字符串到js。试试这样的东西:
假设我需要从后端提醒一个错误,并且我已经将它放在一个名为"error"的java字符串中(在控制器中)。我可以做到这一点(doView):
String error = request.getAttribute("error"); // or it can be simply String error = "sometext"
if ((error != null) || (!error.equals(""))){
request.setAttribute("error", error);
}
else request.setAttribute("error","false");
然后,在您的jsp中,我将在顶部放置一个usebean标记,如:
<jsp:useBean id="error" class="java.lang.String" scope="request"></jsp:useBean>
然后,在脚本标记之间:
var error = "<%=error%>";
if (error != "false") alert(error);
正如我所注意到的,您需要使用if/else语句在控制器中设置var(使用setAttribute)。
相关文章:
- Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
- 验证会话中是否存在对象's数组
- Liferay:从portlet调用JSON服务
- 通过javascript从会话中提取用户名
- 将会话变量从一个页面传递到另一个页面
- 如何保持会话的活力
- Codeigniter会话概念简要说明
- Php未获取会话的最新值
- 当达到codeigniter/tank auth会话超时时,在ajax调用中处理php重定向
- 如何检测用户是否在同一会话中打开了多个窗口或选项卡
- PHP会话页面刷新不起作用
- 使用主题运行时portlet liferay时出现Javascript错误
- 有可能通过sessionID获得快速会话吗
- 让会话值可用于JavaScript的好方法是什么
- DreamFactory REST API POST休息/用户/会话请求总是在IE9中返回错误
- '会话'未定义-会话存储的Este JS/Express/Redis
- 如何使用 php 会话变量作为 Angular Js 数据
- jquery中设置的会话无法进入php
- 通过Javascript更改PHP会话变量
- 在JS中获取portlet会话