严重: Servlet.service() for servlet default threw exception
java.lang.NoSuchMethodException: dao.LoginAction.findBy()
at java.lang.Class.getMethod(Class.java:1605)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.getActionMethod(AnnotationValidationInterceptor.java:55)
at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:41)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:123)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:167)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:105)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:83)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:207)
at com.opensymphony.xwork2.Defau

解决方案 »

  1.   

    Action是这样的
    public String findBy(Login login) {
    System.out.print("开始查找----------1");
    Session session=HibernateSessionFactory.getSession();
    session.beginTransaction();
    System.out.print("开始查找----------2");
        session.get(Login.class,6);//这里id是个序列化字段。应该还是有问题
        System.out.print("开始查找----------3");
        session.getTransaction().commit();
        session.close();
        return "success";
        }struts的xml文件配置
     <action name="find" class="dao.LoginAction"  method="findBy">
    <result name="success" type="redirectAction">sech</result>
    </action>jsp页面调用
        This is  JSP page. <br>
         对于系统的查询操作 <br><br><form action="find.action" method="post">
      字段<select >
        <option value="login.id">编号</option>
        <option value="login.name">姓名</option>
        <option value="login.password">密码</option>
        
        </select><br><br>
        请输入字段<input type="text" name="search"><br><br>
        确认字段后提交   <input type="submit" value="提交"><br><br>
       <br></form>
       <a href="index.jsp">返回首页</a>
       <A  href="/WebRootweb/index/index!findBy.action">返回首页</A>
       
      </body>
    </html>
      

  2.   

    最后我重新修改了代码。将findby改了名字。代码如下:
    public String findById() {
    System.out.print("开始查找----------1");
    Session session=HibernateSessionFactory.getSession();
    session.beginTransaction();
    System.out.print("开始查找----------2");
       // session.get(Login.class,login.getId());//这里id是个序列化字段。应该还是有问题
        System.out.print("开始查找----------3");
        int id=login.getId();
        Query query=session.createQuery("from Login where id="+id);
        logins=query.list();
        System.out.print("查找结束----------4");
        session.getTransaction().commit();
        session.close();
        return "success";
        }估计主要问题是我用Action调用的方法不应该带有形参。对于id也修改了一下 。可以动态调入!