首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NoSuchElementException请求

NoSuchElementException请求
EN

Stack Overflow用户
提问于 2015-01-28 10:13:38
回答 3查看 2.7K关注 0票数 0

在第一次调用getHeaders()之后,指针停留在枚举en的末尾。第二次调用getHeaders()时,检查while(en.hasMoreElements())时,不存在元素,因此返回空向量。

代码语言:javascript
复制
public Enumeration<String> getHeaders(String Pname) {

        Vector<String> s = new Vector<String>();
        Enumeration<String> en = getHttpServletRequest().getHeaders(Pname);
        while (en.hasMoreElements()) {
            String data= (String) en.nextElement();
            String erase= remove(data);
           s.add(erase);
        }   

        return s.elements();    
}

例外:

代码语言:javascript
复制
   java.util.NoSuchElementException: Vector Enumeration at
   java.util.Vector$1.nextElement(Vector.java:305)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-28 10:24:26

如果请求没有request.getHeaders("referer").nextElement(),您的代码referer将失败。引用头并不是必需的,实际上是专门的不应该在某些情况下使用

您可以使用以下代码:

代码语言:javascript
复制
<% Enumeration<String> en = getHttpServletRequest().getHeaders("referer");
   if (en.hasMoreElements()) {
%>
<%= en.nextElement(); %>
<% } %>

另一种解决方案是将getHeaders()方法更改为始终返回枚举中的至少一个元素:

代码语言:javascript
复制
public Enumeration<String> getHeaders(String name) {

    Vector<String> v = new Vector<String>();
    Enumeration<String> en = getHttpServletRequest().getHeaders(name);
    if (!en.hasMoreElements()) {
        v.add("");
    } else while (en.hasMoreElements()) {
        String value = (String) en.nextElement();
        String clean = removeXSS(value);
        v.add(clean);
    }   

    return v.elements();    
}
票数 0
EN

Stack Overflow用户

发布于 2015-01-28 10:19:45

如果您的getHeaders()调用没有返回hits,那么nextElement()将抛出NoSuchElementException,因为它是一个具有0元素的结果,并且已经结束了。

这可能意味着没有"referer“头集。

票数 0
EN

Stack Overflow用户

发布于 2015-01-28 10:28:30

在调用nextElement()之前,应该先检查一下:

代码语言:javascript
复制
<%if (request.getHeaders("referer").hasMoreElements()) { %>
<%=request.getHeaders("referer").nextElement()%>
<%}%>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28189565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档