一 struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
        "http://struts.apache.org/dtds/struts-2.5.dtd"><struts><constant name="struts.devMode" value="true"></constant>
<constant name="struts.action.extension" value="action"></constant>    <!--  Overwrite Convention -->
    <package name="oa_project" extends="struts-default" namespace="/">
<!-- 配置岗位管理Action -->
<action name="roleAction_*" class="roleAction" method="{1}">
<result name="list">/WEB-INF/jsp/roleAction/list.jsp</result>
<result name="addUI">/WEB-INF/jsp/roleAction/addUI.jsp</result>
<result name="editUI">/WEB-INF/jsp/roleAction/editUI.jsp</result>
<result name="toList" type="redirectAction">roleAction_list</result>
</action>    
    </package></struts>

二、Action文件

package wang.oa.view.action;import java.util.List;import javax.annotation.Resource;import com.opensymphony.xwork2.ActionSupport;import wang.oa.domain.Role;
import wang.oa.service.RoleService;public class RoleAction extends ActionSupport { @Resource(name = "roleServiceImpl")
private RoleService roleService; // 声明roleList,并生成get方法,list方法中赋值后,可以自动装入值栈中
private List<Role> roleList; public List<Role> getRoleList() {
return roleList;
} // 声明id,并生成get set方法,使用属性封装
private Long id; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} /**
 * 列表
 * 
 * @return
 * @throws Exception
 */
public String list() throws Exception {
roleList = roleService.findAll();
return "list";
} /**
 * 删除
 * 
 * @return
 * @throws Exception
 */
public String delete() throws Exception {
roleService.delete(id);
return "toList";
} /**
 * 添加页面
 * 
 * @return
 * @throws Exception
 */
public String addUI() throws Exception {
// TODO Auto-generated method stub
return "addUI";
}
/**
 * 添加
 * 
 * @return
 * @throws Exception
 */
public String add() throws Exception {
return "toList";
} /**
 * 修改页面
 * 
 * @return
 * @throws Exception
 */
public String editUI() throws Exception {
// TODO Auto-generated method stub
return "editUI";
} /**
 * 修改
 * 
 * @return
 * @throws Exception
 */
public String edit() throws Exception {
// TODO Auto-generated method stub
return "toList";
}}我在浏览器 输入访问list这个方法就可以访问到数据库,也可以正确返回列表
输入delete方法带一个参数id也可以直接删除但是addUI怎么访问都提示标题的问题。http://localhost:8080/OA_ssh_proj/roleAction_list.action  这样写 可以正确找到并返回list
http://localhost:8080/OA_ssh_proj/roleAction_addUI.action 这样写 就报错struts配置文件的位置没问题,所有的jsp页面也都建立了,位置也正确很奇怪,为什么访问不到呢?

解决方案 »

  1.   

    这是报的异常11:32:14.043 [http-nio-8080-exec-3] ERROR org.apache.struts2.dispatcher.Dispatcher - Could not find action or result: /OA_ssh_proj/roleAction_addUI.action
    com.opensymphony.xwork2.config.ConfigurationException: There is no Action mapped for namespace [/] and action name [roleAction_addUI] associated with context path [/OA_ssh_proj].
    at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:195) ~[struts2-core-2.5.14.1.jar:2.5.14.1]
    at org.apache.struts2.factory.StrutsActionProxy.prepare(StrutsActionProxy.java:57) ~[struts2-core-2.5.14.1.jar:2.5.14.1]
    at org.apache.struts2.factory.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:32) ~[struts2-core-2.5.14.1.jar:2.5.14.1]
    at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:60) ~[struts2-core-2.5.14.1.jar:2.5.14.1]
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:564) [struts2-core-2.5.14.1.jar:2.5.14.1]
    at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) [struts2-core-2.5.14.1.jar:2.5.14.1]
    at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:141) [struts2-core-2.5.14.1.jar:2.5.14.1]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192) [catalina.jar:8.5.9]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165) [catalina.jar:8.5.9]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) [catalina.jar:8.5.9]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:8.5.9]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474) [catalina.jar:8.5.9]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [catalina.jar:8.5.9]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) [catalina.jar:8.5.9]
    at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624) [catalina.jar:8.5.9]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [catalina.jar:8.5.9]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349) [catalina.jar:8.5.9]
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:783) [tomcat-coyote.jar:8.5.9]
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:8.5.9]
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:789) [tomcat-coyote.jar:8.5.9]
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1437) [tomcat-coyote.jar:8.5.9]
    at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:8.5.9]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_112]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_112]
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:8.5.9]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_112]
      

  2.   

    已经找到原因了
    我用的struts2.5 需要加 allow method
      

  3.   

    楼主,在哪里加allow method ??/
      

  4.   

    因为你的action 的name带有 *, 所以你需要加个constant allow你的action名字