几个tld标签文件放到了web-inf目录下了吗?

解决方案 »

  1.   

    汗!JSP不熟就搞Struts了?
    建议先学好JSP
      

  2.   

    楼上说的是 jsp页面里面 你使用了struts标签
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>看看你的web-inf目录下面是否有这两个标签文件
      

  3.   

    总结:
    问题一:.tld文件在web.xml中配置了吗?
    问题二:在也面中引用标签了吗?
            如:<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    问题三:把.jar包放到classpath或者系统能找到的文件目录下了吗?
      

  4.   

    汗!JSP不熟就搞Struts了?
    建议先学好JSP
    ===================================
    不熟悉就不能搞了,我就是不熟悉就搞的
      

  5.   

    楼上说的都不对,其实就是缺少了一个jsp-api.jar这个包。这个包在tomcat5.0以后开始出现,主要就是jsp2.0的使用包。同时支持el表达式。你拷贝一个放到tomcat_home\common\lib下就是了。注意你的tomcat版本,一定要5.0以上。
      

  6.   

    楼上说的很有道理,我把jsp-api.jar放到classpath目录下,果然没有了那个错误,不过出现新的错误:
    java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory然后我又放入包:commons-logging-api.jar这下错误变成了:
    exception javax.servlet.ServletException
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    org.apache.jsp.logon_jsp._jspService(logon_jsp.java:111)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    root cause java.lang.NoClassDefFoundError
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Class.java:164)
    org.apache.jsp.logon_jsp.class$(logon_jsp.java:123)
    org.apache.jsp.logon_jsp._jspx_meth_bean_message_0(logon_jsp.java:123)
    org.apache.jsp.logon_jsp._jspService(logon_jsp.java:85)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)非常感谢诸位的帮助,谢了!
      

  7.   

    呵呵,同样,你少了一个commons-logging的包,这个包是apache用来输出日志的,主要提供了对log4j和java自带log等日志包的兼容。拷贝一个放到你的WEB-INF/lib下就是了。
      

  8.   

    呵呵,不好意思,刚才没仔细看贴。
    org.apache.jsp.logon_jsp.class$(logon_jsp.java:123)
    org.apache.jsp.logon_jsp._jspx_meth_bean_message_0(logon_jsp.java:123)
    org.apache.jsp.logon_jsp._jspService(logon_jsp.java:85)
    你去看看你编译后的这个文件的123行和85行分别是什么。有可能是你的structs运行包拷贝的不全,为了省事,你把structs所有包都拷贝到WEB-INF/lib下试试,最好还是把错误段贴出来让偶瞧瞧。
      

  9.   

    感谢楼上的。编译错误的代码是这样的:
    private boolean _jspx_meth_bean_message_0(PageContext _jspx_page_context)
              throws Throwable {
        PageContext pageContext = _jspx_page_context;
        JspWriter out = _jspx_page_context.getOut();
        //  bean:message
        org.apache.struts.taglib.bean.MessageTag _jspx_th_bean_message_0 = (org.apache.struts.taglib.bean.MessageTag) _jspx_tagPool_bean_message_key_nobody.get(org.apache.struts.taglib.bean.MessageTag.class);    //第123行
        _jspx_th_bean_message_0.setPageContext(_jspx_page_context);
        _jspx_th_bean_message_0.setParent(null);
        _jspx_th_bean_message_0.setKey("logon.jsp.title");
        int _jspx_eval_bean_message_0 = _jspx_th_bean_message_0.doStartTag();
        if (_jspx_th_bean_message_0.doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE)
          return true;
        _jspx_tagPool_bean_message_key_nobody.reuse(_jspx_th_bean_message_0);
        return false;
      }第85行就是调用这个函数的了。这些代码怎么看得懂噢。晕
      

  10.   

    那应该是解析<bean:message>这个标签的时候出现问题了,你下面做几个检查:
    1.在web.xml中是否指定了引用这个taglib的设置
    2.你的structs的包是否齐全(不仅仅是structs.jar这一个包,你把structs的所有包都拷贝过去吧,具体哪些包我就不给你找了,直接拷贝省事一点。)
    3.检查一下你的tld文件和structs的版本是否兼容(一般不会有此问题,已防万一)如果都检查完了,还是搞不定,给我发消息
      

  11.   

    在web.xml文件里定义taglib的语句是这样的:
      <taglib>
        <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
      </taglib>
      <taglib>
        <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
        <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
      </taglib>
    <bean:message>标签在struts-bean.tld中有定义:
    <name>message</name>
    <tagclass>org.apache.struts.taglib.bean.MessageTag</tagclass>
    我刚才又下了一个最新版本的struts,把里面所有的jar文件都放到/lib目录下了,另外把tld文件也更新了一遍。估计第二和第三的问题都不存在。
     mxlmwl(飞星) 这么热心,非常的谢谢你。 
      

  12.   

    有些包要自己手工下的...commons组件包