Javascript 在JS中获取portlet会话

Javascript 在JS中获取portlet会话,javascript,session,portlet,Javascript,Session,Portlet,嗨,我正在尝试在我的JS变量中获取portlet会话。我该怎么办呢 request.getPortletSession().getAttribute("countryList"); //This is my .java class code 我需要在JS中获取相同的内容?您不能通过javascript访问java会话 一种解决方案是将java对象序列化为json字符串,并将其保存到会话中(如果对象为null,只需保存一个等于“null”的字符串) 然后你可以用 <script typ

嗨,我正在尝试在我的JS变量中获取portlet会话。我该怎么办呢

 request.getPortletSession().getAttribute("countryList");  //This is my .java class code

我需要在JS中获取相同的内容?

您不能通过javascript访问java会话

一种解决方案是将java对象序列化为json字符串,并将其保存到会话中(如果对象为null,只需保存一个等于“null”的字符串)

然后你可以用

<script type="text/javascript">
var obj = <%=request.getPortletSession().getAttribute("countryListJson")%>;
</script>
然后,您应该将此方法映射到url,如“/contryList.do” 在您的页面中:

<script type="text/javascript" src="<%=request.getContextPath()%>/contryList.do"></script>
<script type="text/javascript">
    alert(contryList);
 </script>

警报(控制列表);

据我所知,您需要将countryList(来自controller)放入一些JS变量中。您不需要在JS中获取portlet会话,您应该能够执行以下操作:

我使用Scriptlet和usebean设法从controller到js获取了一些字符串。试着这样做:

假设我需要从后端发出错误警报,并将其放入名为“error”(在控制器中)的java字符串中。 我能够做到这一点(doView):

然后,在jsp的顶部,我将放置一个usebean标记,如:

<jsp:useBean id="error" class="java.lang.String" scope="request"></jsp:useBean>

然后,在脚本标记之间:

var error = "<%=error%>";
if (error != "false") alert(error);
var error=”“;
如果(错误!=“错误”)警报(错误);
正如我注意到的,您需要使用if/else语句在控制器中设置var(使用setAttribute)

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 id="error" class="java.lang.String" scope="request"></jsp:useBean>
var error = "<%=error%>";
if (error != "false") alert(error);