【问题标题】:Why won't my IDE recognize this type that I believe I have correctly imported in a JSP?为什么我的 IDE 不能识别我认为我已正确导入到 JSP 中的这种类型?
【发布时间】:2012-11-25 05:41:39
【问题描述】:

这快把我逼疯了,我已经在herehere 寻找过以前的答案,但至今无济于事。

我正在尝试遵循 this 教程,该教程使用罗马库的 RSS 提要使用 servlet 将提要条目输出到 JSP。我正在使用 Eclipse,即使我已将 JAR 放在项目的构建路径和 WEB-INF/lib 文件夹中,它也无法识别来自罗马的“SyndFeed”类。以下代码仍然显示“未定义类型”:

<jsp:useBean id="syndFeed" scope="request" type="SyndFeed" />

在此之上,我有:

<%@ page import="com.sun.syndication.feed.synd.SyndFeed" %> 
<%@ page import="com.sun.syndication.feed.synd.SyndEntry" %> 
<%@ page import="java.util.Iterator" %> 

我使用 Rome 的 servlet 基本上直接来自教程:

public class RssServlet1 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    private RequestDispatcher indexJSP;

    @Override
    public void init(ServletConfig config) throws ServletException {
        ServletContext context = config.getServletContext();
        indexJSP = context.getRequestDispatcher("/WebContent/index.jsp");
    }


    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {

        URL feedURL = new URL("http://rss.cnn.com/rss/cnn_tech.rss");
        SyndFeedInput syndInput = new SyndFeedInput();
        SyndFeed syndFeed = null;
        XmlReader xmlReader = new XmlReader( feedURL );

        try {
            syndFeed = syndInput.build( xmlReader );
        } catch (IllegalArgumentException e) {
            e.printStackTrace();
        } catch (FeedException e) {
            e.printStackTrace();
        }

        request.setAttribute("syndFeed", syndFeed);
        indexJSP.forward(request, response);

    }


}

servlet 没有显示编译错误。所有导入都可以,包括来自com.sun.syndication.feed.synd.SyndFeed

我很茫然。在此先感谢您的帮助!

【问题讨论】:

  • 感谢您的建议,苏宾。原来我有错误的属性。

标签: java jsp servlets rss rome


【解决方案1】:

jsp:useBeanclasstype 属性(这两个属性的含义不同;请确保您使用正确的属性来满足您的需要)期望完全限定的类名。使用:

<jsp:useBean id="syndFeed" scope="request" type="com.sun.syndication.feed.synd.SyndFeed" />

【讨论】:

  • Facepalm 是的,做到了。对于可能遇到此问题的其他任何人,请注意 SyndFeed 是一个接口,因此一旦将“类型”更改为“类”,您将收到“无法实例化”错误。但这确实回答了原始问题。谢谢你,伊萨克!
猜你喜欢
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 2018-08-25
  • 2023-04-02
  • 1970-01-01
相关资源
最近更新 更多