使用javascript设置会话属性

时间:2013-08-03 11:08:18

标签: java javascript ajax jsp httpsession

我在 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设置会话属性?

5 个答案:

答案 0 :(得分:4)

您可能会误解同一文件中存在jspjavascript。是的,但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。