为什么HTML元素的name属性差异会影响Servlet中的变量值?

huangapple 未分类评论44阅读模式
英文:

Why does difference in name attribute of an HTML element affect variable value in a Servlet?

问题

我试图学习Servlets,遇到了一个问题。当我在HTML元素的name属性中使用破折号或下划线时,Servlet接收到的值为null。但是,如果我不使用下划线或破折号,Servlet会接收到输入的值。

第一个代码片段正常工作,结果可以在这里看到 第一个代码片段的输出,而第二个代码片段在按下“提交”按钮时不返回任何值,如此图片所示 第二个代码片段的输出

为什么会发生这种情况?

编辑

我可能应该提到我还在使用一个AJAX函数:

function getNetSalary() {
    $("#submitButton").click(function(){
        $.ajax({
            url:'someservlet',
            data: {
                labourUnionFee: $('#labour-union-fee').val()
            },
            type: 'POST',
            cache: false,
            success: function(data){
                $('#net-salary-information-div').text(data);
            },
            error: function(){
                alert('Please Fill all necessary fields');
            }
        });
    });
}

而这是我的someservlet中的代码:

String labourUnionFee = request.getParameter("labour-union-fee");
response.setContentType("text/plain");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(labourUnionFee);
英文:

I'm trying to learn Servlets and I came across an issue. When I use dashes or underscores in name attribute of an HTML element the value that servlet receives is null. However, If I don't use underscores or dashes, the servlet receives the entered value.

<input type="text" name="labourUnionFee" id="labour-union-fee" value="0">
String labourUnionFee = request.getParameter("labourUnionFee");

works fine and the result can be seen from here output of the first snippet, whereas

<input type="text" name="labour-union-fee" id="labour-union-fee" value="0">
String labourUnionFee = request.getParameter("labour-union-fee");

does not return any value when 'submit' button is pressed as this picture demonstrates output of the second snippet

Why does this occur?

EDIT

I probably should have mentioned that I am also using an AJAX function:

function getNetSalary() {
        $("#submitButton").click(function(){
                $.ajax({
                        url:'someservlet',
                        data: {
                            labourUnionFee: $('#labour-union-fee').val()
                        },
                        type: 'POST',
                        cache: false,
                        success: function(data){
                            $('#net-salary-information-div').text(data);
                        },
                        error: function(){
                            alert('Please Fill all necessary fields');
                        }
                    }
                );
            }
        );

And this is inside my 'someservlet':

String labourUnionFee = request.getParameter("labour-union-fee");
    response.setContentType("text/plain");
    response.setCharacterEncoding("UTF-8");
    response.getWriter().write(labourUnionFee);

huangapple
  • 本文由 发表于 2020年4月3日 21:34:54
  • 转载请务必保留本文链接:https://java.coder-hub.com/61013128.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定