在servlet中更改了jsp上的select get null值

时间:2015-07-07 11:53:32

标签: java jquery jsp

我有一个jsp页面,其中有很多选项使用 jQuery 填充,即他们有<option>个标签,他们只是通过一个函数获取它。每个选择每个都有30个选项。

<form id="target" name="target" action="/project/myservlet" method="get">
<select class="myClass" id="sel1" name="sel1" ></select>
<select class="myClass" id="sel2" name="sel2"></select>
...
</form>

我使用request.getParameter("sel1")在我的servlet中收到了这些值,但是对于更改的选择,我得到null。就像我说的那样,我从第2,第4和第5选择中选择值,然后这些选择在servlet中获取空值。其他人获得第0个值(默认值和未更改) - 这没关系。 This可以帮助解释我的问题。当我修改select时,我在下一页中得到null。

根据这一点,如果我在select中使用onload,则有助于将更新的值带到ONE select的下一页。但问题是我不只是在页面上有一个选择。我希望更新的值在没有页面刷新/转到另一页的情况下进入下一页,除非单击提交它们。我认为在更改发生时请求没有得到更新?即使是“get”中的url也没有获得更改的选择。

没有这样的错误,只是如果选择未经修改我会得到值(默认值)。它将默认值发送到下一页。当我从下拉列表中选择另一个选项时,我在servlet上得到null,除非我使用onchange提交表单。但这对我来说不起作用,因为我有很多选择。我不能继续提交表格,并在每次选择更改时转到下一页。

编辑: 如果有帮助,这是我的jQuery代码:

$(document).ready(function() {

                $('select').change(function(){
                    var v = $(this).val();
                    $('select option[value="'+$(this).data('old-val')+'"]').prop('disabled', false);
                    $(this).data('old-val',v);
                    if(v != "0"){
                        $('select option[value="'+v+'"]').not(this).prop('disabled',true);
                    }
                });

                $('select').each(function(idx,select){   
                    var stateArray = ["Preference No. "+(idx+1),"Bill", "Sally", "Alice"];
                    $.each(stateArray, function(iIdx, iItem){  
                        $(select).append('<option value="'+iIdx+'">'+iItem+'</option>');
                    });
                });   

                $( "#target" ).submit(function( event ) {
                    alert( "Handler for .submit() called." );
                });

            });

编辑2:Servlet:     public class Preference扩展了HttpServlet {

protected void processRequest(HttpServletRequest request, HttpServletResponse response) {
    response.setContentType("text/html;charset=UTF-8");
    try {
             PrintWriter out = response.getWriter();
             String sel  =  request.getParameter("sel1");
         }catch(Exception e){ }
   }
}

2 个答案:

答案 0 :(得分:0)

您需要在<option>代码中添加<select>代码。

每个<option>必须具有value属性,如下所示:

<option value="3">Apple</option>

所选选项的value属性中的值将是<select>的值。您将像往常一样通过name在服务器端获取它。

答案 1 :(得分:0)

我的jQuery中的所有select元素都禁用了所选的选项。我不得不稍微修改jQuery。残疾元素不以表格形式转发。在修改jQuery以禁用选项时,问题得到了解决。不得不采取一些帮助来识别并纠正这一点。