2013-08-03 45 views
2

我在使用jqueryui autocomplete combobox在我的jsp页面中。我需要将组合框的选定值设置为HttpSession使用javascript设置会话属性

我试着如下。

this._on(this.input, { 
    autocompleteselect: function (event, ui) { 
     // alert(ui.item.value); 
     var value = ui.item.value; 
     <% session.setAttribute("comboboxvalue",value); %> 

     ui.item.option.selected = true; 
     this._trigger("select", event, { 
      item: ui.item.option 
     }); 
} 

用这种方法的问题是代码不识别value参数。

如何解决此问题并使用javascript设置会话属性?

回答

0

以下是我如何成功完成任务。

我已经创建了一个新的servlet并触发如下的AJAX调用。然后我将comboboxvalue设置为来自servlet的会话。

this._on(this.input, { 
    autocompleteselect: function(event, ui) { 
     $.ajax({ 
     type: 'POST', 
     url: 'AjaxServlet', 
     dataType : 'json', 
     data: { comboboxvalue : ui.item.value } 
     }); 
     ui.item.option.selected = true; 
     this._trigger("select", event, { 
      item: ui.item.option 
     }); 
    }, 

    autocompletechange: "_removeIfInvalid" 
}); 
1

Java脚本是一种客户端技术。无法从Java脚本设置任何会话变量。

您可以使用Ajax来做到这一点。通过Ajax,你必须异步地向服务器发送请求,然后从servlet中将数据添加到会话中。

4

您可能会误解jspjavascript存在于同一个文件中。是的,但JSP部分编译在服务器端本身来到client

中间的代码<% %>在服务器端执行。

你不能这样做与Javascript

你需要为此做一个服务器请求(有表单,Ajax,url ..等)。

0

您无法在JavaScript中设置会话值。

对于您的情况,您可以在选择框中触发一个针对onChange事件的AJAX调用。您可以简单地将选择框值发送到服务器并将其置于会话中。

0

您可以使用JavaScript运行表来发表args设置为一个servlet类, 和setSession在这个servlet类。