servlet 属性名称可以包含连字符 - 吗?
Can servlet attribute names contain a hyphen -?
servlet 属性名称能否包含连字符 -
?
因为,我试图从我的 servlet 中 doPost
中的请求集检索属性,但结果不是我要找的。
在我的 servlet 中有这个:
String X_USER = request.getParameter("X-User");
request.setAttribute("X-User", X_USER);
String YYYY_YYYY = request.getParameter("Y_CODE");
request.setAttribute("Y-Code", YYYY_YYYY);
在我想要显示这些属性的 JSP 中,我这样做:
<li>${X-User}</li>
<li>${Y-Code}</li>
问题是我得到的是 0 而不是参数值。
你的具体问题不是HTTP请求参数,而是EL变量名。所有 Java 关键字和标识符在 EL 变量名称中都是非法的。
-
是 Java(以及 EL)中的减法运算符。 EL 处理器应该如何知道您是要使用具有字面名称 X-User
的属性还是从 ${X}
中减去 ${User}
的整数结果?根据规范解释为后者,这也解释了 0
.
的数值结果
只需使用下划线或驼峰式大小写,就像正常情况下一样 Java。
request.setAttribute("Y_User", X_USER);
request.setAttribute("Y_Code", Y_CODE);
${X_User}
${Y_Code}
如果您绝对需要在 EL 中访问包含连字符的请求属性,请在请求范围映射中使用大括号表示法:
${requestScope['X-User']}
${requestScope['Y-User']}
顺便说一下,这同样适用于请求参数,您不一定需要将其复制到 servlet 的请求范围中:
${param['X-User']}
${param['Y-Code']}
另请参阅:
您可以将 jsp 的隐式对象用作
response.getAttribute("X-User");
response.getAttribute("Y-Code");
当您从 servlet 设置属性时,无需通过 jstl 获取它。
servlet 属性名称能否包含连字符 -
?
因为,我试图从我的 servlet 中 doPost
中的请求集检索属性,但结果不是我要找的。
在我的 servlet 中有这个:
String X_USER = request.getParameter("X-User");
request.setAttribute("X-User", X_USER);
String YYYY_YYYY = request.getParameter("Y_CODE");
request.setAttribute("Y-Code", YYYY_YYYY);
在我想要显示这些属性的 JSP 中,我这样做:
<li>${X-User}</li>
<li>${Y-Code}</li>
问题是我得到的是 0 而不是参数值。
你的具体问题不是HTTP请求参数,而是EL变量名。所有 Java 关键字和标识符在 EL 变量名称中都是非法的。
-
是 Java(以及 EL)中的减法运算符。 EL 处理器应该如何知道您是要使用具有字面名称 X-User
的属性还是从 ${X}
中减去 ${User}
的整数结果?根据规范解释为后者,这也解释了 0
.
只需使用下划线或驼峰式大小写,就像正常情况下一样 Java。
request.setAttribute("Y_User", X_USER);
request.setAttribute("Y_Code", Y_CODE);
${X_User}
${Y_Code}
如果您绝对需要在 EL 中访问包含连字符的请求属性,请在请求范围映射中使用大括号表示法:
${requestScope['X-User']}
${requestScope['Y-User']}
顺便说一下,这同样适用于请求参数,您不一定需要将其复制到 servlet 的请求范围中:
${param['X-User']}
${param['Y-Code']}
另请参阅:
您可以将 jsp 的隐式对象用作
response.getAttribute("X-User");
response.getAttribute("Y-Code");
当您从 servlet 设置属性时,无需通过 jstl 获取它。