历史 | 登录     查看当前页的打印版本.  
问题详情 (XML | Word | Printable)

Key: EASYJWEB-2
类型: 问题 问题
状态: Closed Closed
解决: Fixed
优先级: Major Major
开发者: daxia
报告人: daxia
投票: 0
关注人: 0
操作

复制 问题
创建 子任务
如果你是 登录 你不能看到更多操作.
easyjweb

自动扫描Action的时候,会复盖已通过easyjf-web.xml的配置信息。

创建: 14/十一月/07 09:39 下午   更新: 14/十一月/07 10:14 下午
模块:
影响版本:
修复版本:

环境: tomcat5.5+jdk1.5 windows2003 ie6


 描述  « Hide
我在一个新的项目中想直接使用com.easyjf.sercurity.mvc.LoginAction来实现登录。LoginAction的部份代码:

@Action(view="cms/manage")
public class LoginAction extends AbstractPageCmdAction {

public Page doLogin(WebForm form, Module module) {
loginTimes++;
return page("login");
}
}
在默认情况下要求login.html放在/views/cms/manage/login/login.html位置。但我的配置文件不希望放在/views/cms/manage/login/login.html这个文件,因此按照开发文档在easyjf-web.xml中自动配置了一个Action,如下:
<module name="/login" path="/login" action="com.easyjf.security.mvc.LoginAction" inject="byType">
<page name="login" url="/login.html" type="template"/>
</module>

然后启动Web服务器,执行login.ejf。得到如下的错误:
友情提示!
frameworkException : 找不到模板!/WEB-INF/views/cms/manage/login/init.html; nested exception is org.apache.velocity.exception.ResourceNotFoundException: Unable to find resource '/cms/manage/login/init.html'
详细请查询http://www.easyjf.com

似乎没有按照我想要的方式来工作,再看启动日志:
1125 [main] INFO com.easyjf.web.FrameworkLoader - 自动加载Action:com.easyjf.security.mvc.LoginAction-------路径:/login
1125 [main] INFO com.easyjf.web.FrameworkLoader - 自动加载Action:com.easyjf.security.mvc.LoginAction-------路径:/login

很显然,这不是我需要的结果。应该改成下面的方式:

      在默认的情况下,EasyJWeb会在指定的包中扫描Action,但如果已经通过easyjf-web.xml来配置了Action,则不应该再加载这个Action。

 所有   备注   改动记录      排列顺序:
daxia - 14/十一月/07 09:42 下午
这是EasyJWeb在自动加载指定包中Action时的一个小Bug。跟踪了一会儿代码,发现:

// 如果容器中已经注册过这个类,或者已经具有同path的module,则不进行注册
if (container.getBean(clz) == null
&& this.webConfig.getModules().get(name) == null) {
if (name.charAt(0) != '/')
name = "/" + name;
logger.info("自动加载Action:" + clz.getName()
+ "-------路径:" + name);


这其中由于我们的存放到webCofig中的类路径都是带有/的,因此需要把if (name.charAt(0) != '/')name = "/" + name;这一句提到if(container.)之前。问题已经得到解决。

daxia - 14/十一月/07 10:14 下午
已调整,支持cmd作为命令参数。