当前位置: 代码迷 >> Java Web开发 >> 一个基础有关问题,但是找不到解决方法:零注解的struts2 命名空间下找不到指定的action 求大神帮忙
  详细解决方案

一个基础有关问题,但是找不到解决方法:零注解的struts2 命名空间下找不到指定的action 求大神帮忙

热度:44   发布时间:2016-04-13 22:18:04.0
一个基础问题,但是找不到解决办法:零注解的struts2 命名空间下找不到指定的action 求大神帮忙
最近弄了下零注解配置的SSH项目,在struts部分发现运用s标签会出现一些奇奇怪怪的东西,本来可以好好运行的项目,换上了s标签却出现了找不到指定action的问题,下面贴代码。

先说说action,这部分代码是绝对没有问题的,只是让大家看看相关注解:

@Namespace("/Login")
@ParentPackage("struts-default")
@Results({
        @Result(name = "success",location = "/index.jsp"),
        @Result(name = "error",location = "/login/fail.jsp")
})
@Controller
public class LoginAction extends BaseAction implements Serializable, ModelDriven<Admin> {
  
    private static final long serialVersionUID = 1351937910832424955L;
  
    private Admin admin = new Admin();
  
    public Admin getModel() {
        return admin;
    }
  
    private LoginService loginService;
  
    @Autowired
    public void setLoginService(LoginService loginService) {
        this.loginService = loginService;
    }
  
    @Action(value = "login")
    @Validations(requiredStrings = {
            @RequiredStringValidator(type = ValidatorType.SIMPLE, trim = true, fieldName = "admin.username", message = "请输入用户名.*"),
            @RequiredStringValidator(type = ValidatorType.SIMPLE, trim = true, fieldName = "admin.password", message = "请输入密码.*")
    }
    )
    public String login(){
        httpServletRequest = ServletActionContext.getRequest();
        admin = loginService.findAdminByNameAndPassword(admin.getUsername(), admin.getPassword());
        if (admin != null) {
            httpServletRequest.setAttribute("username", admin.getUsername());
            return SUCCESS;
        } else {
            addFieldError("", "用户名密码错误");
            return ERROR;
        }
    }
}


然后是jsp视图页面,代码中action=login以及namespace=/Login就是找不到的action以及命名空间:

<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
    <title></title>
</head>
<body>
  <s:form action="login" namespace="/Login" method="post">
    <s:textfield label="用户名" name="username"/>
    <s:password label="密码" name="password"/>
    <s:submit label="登录"/>
  </s:form>
</body>
</html>


内容就这么多,希望有人帮忙看看,关于注解方面也可以一起探讨探讨
------解决思路----------------------
你可以先用测试工具,发个post请求测试这个可不可用

------解决思路----------------------
没有用过,看了些资料。@Namespace("/Login")换成@Component("Login")试试看看行不行
  相关解决方案