0

在将我的 Struts Action 转换为注释之前,该项目运行良好。但现在我试图处理注释,并出现此错误。我之前struts.xml包含该操作的文件是:

<action name="searchUser" 
        class="net.viralpatel.struts2.action.MemberCrudOperations"
        method="getUserById">
            <result name="success">EditMember.jsp</result>
</action>

现在我把它转换成注释,我的MemberCrudOperations

package net.viralpatel.struts2.action;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionSupport;

 @Namespace("/")
 @Result(name="success", location="EditMember.jsp")

public class MemberCrudOperations extends ActionSupport{

private static final long serialVersionUID = 1L;
Employee employee;
List<Employee> emps = new ArrayList<Employee>();
public String fName;
public String lName;
public Long employeeId;

private Connection connection;

public MemberCrudOperations() {
    connection = DbUtil.getConnection();
}

@Action(value="searchUser")
public String getUserById() {
        employee=new Employee();
    try {

        PreparedStatement preparedStatement = connection.
                prepareStatement("select * from employee where first LIKE ?  OR last LIKE ? ");
        preparedStatement.setString(1, "%"+fName+"%");
        preparedStatement.setString(2, "%"+lName+"%");
        ResultSet rs = preparedStatement.executeQuery();

        if (rs.next()) {
            employee.setId(rs.getInt("id"));
            employee.setAge(rs.getInt("age"));
            employee.setFirstName(rs.getString("first"));
            employee.setLastName(rs.getString("last"));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    return "success";
}

我的视图文件是:

<s:form  method="post" theme="simple" action="searchUser">
    <table border="1">
        <tr>
            <td>First Name: </td> 
            <td><s:textfield name="fName"></s:textfield></td>
        </tr>

        <tr>
            <td>Last Name: </td> 
            <td><s:textfield name="lName"></s:textfield></td>
        </tr>

        <tr>
           <td></td> 
           <td  align="right"><s:submit name="search" value="Search"  ></s:submit></td>
        </tr>
    </table>
</s:form>

Struts 问题报告

Struts has detected an unhandled exception:
    Messages:   
    There is no Action mapped for namespace [/] and action name [searchUser] associated with context path [/Struts2_Hello_World].
Stacktraces
There is no Action mapped for namespace [/] and action name [searchUser] associated with context path [/Struts2_Hello_World]. - [unknown location]

    com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
    org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
    org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
    com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
    org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552)
    org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
    org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936)
    org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1004)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)
4

0 回答 0