struts2 namespace问题

08-01-25 32647908

最近一个项目我页面和后台全都包了!页面逻辑规划我也根据不同性质的页面分了很多层次,因为这个项目

用的架构是struts2+spring2+hibernate3.所以在规划aciton的时候必然的用到了struts2的package的namespace

属性。但当我测试的时候发现,struts2粗暴的干涉到了我的页面逻辑。举个demo吧

我定义了两个包

1

<package name="user" extends="json-default" namespace="/first">

<action name="china">

<result>test1/first.jsp</result>

</package>

2

<package name="admin" extends="json-default" namespace="/second">

<action name="china">

<result>test2/second.jsp</result>

</package>

然后我在根目录下写了个index.jsp 内容<jsp:forward page=test1/first.jsp/>

first.jsp中的内容

<a href="second/second.action">测试1</a>

注意:这时候出现了这样一个情况测试1的URL 是 :http://localhost:8080/qd/first/second.acion

理所当然There is no Action mapped for namespace !

现在怎么办呢?这怎么办?是我用struts2方法不对。我觉得是。还请知道的朋友确定下!

但我必须要满足我的需求,我做的折中的办法是不用namespace。把struts.xml分开。不同的模块定义一个

xml文件,最后在struts.xml里简单的调用下。但有点不甘心,因为这个有办法可以解决的。但因项目时间紧

我只好做出这样的取舍,觉得这样除了不能用同名的aciton之外也没什么不好,暂时就这样办了。

本来还有话,今天时间不够了!先发上来这些,供和朋友们讨论下。

banq兄,有话直说啊!现在还跟不上你的思想,有点抵触你的某些说法和思想,但喜欢你的坦白直率,所以有什么

想法先往你的论坛跑!-_-

<a href="<s:url action="shopadmin/shopadmin.action"/>">测试2</a>

此时我在first下定义的包中的结果对应的页面的连接全部为 projectName/first/xxx了,这样我页面中的

所有连接都失效错误引发系统异常了,也许这是我没有正确使用struts2的结果,但这也是我的一个小需求吗。

我现在折中的办法是,一个包下面就是一个模块,如果这个页面中用到别的包的下面的aciton的时候。

我的一个”收集箱“ http://hi.baidu.com/%CE%A2%D6%D0%BF%C6%BC%BC

一个”心得地“http://hi.baidu.com/32647908

banq
2008-01-27 11:47
欢迎发表自己的想法,这是最重要的。

个人认为:为什么很多人觉得JavaEE复杂,其实不是Hibernate的ORM,ROR也有ORM,也不是业务层,因为业务层是根据业务需求而定,不是技术架构能搞定的,业务需求复杂,你想简单都没办法,那么剩余的就是表现层了,表现层的复杂性是导致JavaEE复杂的一个主要原因之一,MVC已经复杂化,但是出于设计上质量考虑,MVC是底线,所以,如果在MVC基础上再引入太多设计因素,就搞乱了表现层。

我以前表示过:Struts2其实就是Webwork对表现层“强奸”的产物,引入过多设计元素如Namespace导致表现出异常复杂难以控制,当然,你可以举出100个理由来说明这些过度设计的理由,但是作为应用者,我只知道,表现层有了MVC和简单少量的标签库就足够,如果追求更多表现出效果,我会向AJAX寻求帮助。

猜你喜欢