我在 jsp 页面中使用jqueryui autocomplete combobox。我需要将组合框的选定值设置为HttpSession
。
我尝试如下。
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
param。
如何解决此问题并使用javascript
设置会话属性?
答案 0 :(得分:4)
您可能会误解同一文件中存在jsp
和javascript
。是的,但JSP
部分编译在服务器端本身来自client
。
<% %>
之间的代码在服务器端执行。
您不能使用Javascript
。
您需要为此发出服务器请求(有表单,Ajax,url..etc)。
答案 1 :(得分:1)
Java脚本是一种客户端技术。无法从Java脚本中设置任何会话变量。
您可以使用Ajax执行此操作。通过Ajax,您必须异步向服务器发送请求,然后从servlet中将数据添加到会话中。
答案 2 :(得分:0)
您无法在JavaScript中设置会话值。
对于您的情况,您可以在选择框中触发onChange事件的AJAX调用。您只需将选择框值发送到服务器并将其置于会话中即可。
答案 3 :(得分: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"
});
答案 4 :(得分:0)
您可以使用javaScript操作表单将args发布到servlet类, 和此servlet类中的setSession。