该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2006-10-20
zhouxuanyi 写道 我们用的最新的webwork2.2.4的xwork还是需要实现接口的 可能是我看没清楚, 不过实现一个接口好像也不是那么难以接受 zhouxuanyi 写道 就是不想使用propertydriven啊,那样必须user.name,user.passwd,而支持多个java对象model driven时,可以name,passwd啊 个人觉得 user.name 比 name 更好, 描述层次关系更清楚, 更何况多层对象的时候你还是要用 a.b.c zhouxuanyi 写道 对,就是由于放到一起会导致结构混乱 操作 -> action, 实在不明白你说的混乱是什么意思 |
|
返回顶楼 | |
发表时间:2006-10-20
对,第二个问题就是个人喜好问题,我这个做法只是给用户多了一个选择,其实用户还用property driven做两个model driven也可以,
第二个的结构混乱是你所说的,把相关的业务放在一个Action里,用xxxAction!method来调用,就会造成混乱,你分不清那个property是那个method的,那个是从request读进来的,哪个是输出到OgnlStack里的,当然,绝大部分是由于用户使用ide生成get、set方法时都选了,而action输入只需要set,输出只需要get,这也是一个问题 public FooAction extends ActionSupport{ private String foo; private int bbb; //两个的getset方法 public void a(){...} public void b(){...} } 请问你能分清foo是a的还是b的吗? |
|
返回顶楼 | |
发表时间:2006-10-20
还有,如果fooAction相关的拦截器有3个,a使用a,c,b使用b,c,你怎么做,可能你只有说写两个Action了,或者在拦截器里面加if。。else了,但是a,b都是一个业务的两个操作,比如,一个是读取,一个是更改,读取不需要权限控制,更改需要,而你的权限是用拦截器做的,为了权限配置方便,你也需要写两个Action,这就是xwork的不足,当然,并不是说我不喜欢xwork,毕竟,在以上几种框架,我最喜欢的还是xwork,在项目中也做了几个一两百表的东西,但是,不能说他完全ok啊
|
|
返回顶楼 | |
发表时间:2006-11-09
|
|
返回顶楼 | |
发表时间:2006-11-09
使用xyz开发web应用非常简单,首先,导入xyz.jar,xyzExtends.jar
然后,写一个简单的java类,添加Read注解就能读取request的参数,添加Out注解将field值放到request里面 /** *this is a very simple logic,only read parameter from request *and then translate it into request attribute */ package sample.logic; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import xyz.frame.annotations.Out; import xyz.frame.annotations.Read; public class FirstLogic { private static final Log LOG = LogFactory.getLog(FirstLogic.class); @Read @Out private String firstParameter; public void showFirstParameter() { LOG.debug("firstParameter:"+firstParameter); } } |
|
返回顶楼 | |
发表时间:2006-11-09
由于xyz是根据命名规范查找view页面的,所以
sample.logic.FirstLogic的showFirstParameter()的结果页面就是 /sample/logic/FirstLogic!showFirstParameter.ok.jsp: <form action="FirstLogic!showFirstParameter.xyz"> Type your first parameter:<input name="firstParameter"/> <input type=submit /> </form> <br> firstParameter=<font color=red><%=request.getAttribute("firstParameter")%></font> 如果想调用他:url是/sample/logic/FirstLogic!showFirstParameter.xyz 这是由于web.xml的配置: <servlet> <servlet-name>xyz</servlet-name> <servlet-class> xyz.frame.web.ApplicationServlet </servlet-class> <load-on-startup>0</load-on-startup> </servlet> <servlet-mapping> <servlet-name>xyz</servlet-name> <url-pattern>*.xyz</url-pattern> </servlet-mapping> |
|
返回顶楼 | |
发表时间:2006-11-09
如果想读取同名参数数组:
也好办: /** *this is a logic to read array parameter from request *and then translate them into request attribute */ package sample.logic; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import xyz.frame.annotations.Out; import xyz.frame.annotations.Read; public class MultiParaLogic { private static final Log LOG = LogFactory.getLog(MultiParaLogic.class); @Read @Out private String[] test; public void showTest(){ for(int i=0,len=test.length;i<len;i++){ LOG.debug("test"+i+"---"+test[i]); } } } |
|
返回顶楼 | |
发表时间:2006-11-09
弱弱的问:JDK1.4怎么白相?偶太懒了,不高兴重装机器,至今还用JDK1.4呢。
写注解和写配置有啥本质区别?传说中的0配置是不是可以连写注解都不用? |
|
返回顶楼 | |
发表时间:2006-11-09
忘了提一句,ModelDriven的问题已经被讨论了好多回了,不晓得你如此喜欢ModelDriven,哪能白相嵌套对象的赋值?OGNL在哪里用到?
|
|
返回顶楼 | |
发表时间:2006-11-09
downpour 写道 弱弱的问:JDK1.4怎么白相?偶太懒了,不高兴重装机器,至今还用JDK1.4呢。
写注解和写配置有啥本质区别?传说中的0配置是不是可以连写注解都不用? 写注解和写配置,我认为没有本质区别,不过写配置是编译后的,可以动态改变,写注解是编译前的,不可以动态改变,事实上如果将@Read换成set,@Out换成get,如果view固定为一种,比如jsp的话,注解是可以不要的,事实上,vrport就是这样做的,像webwork一样,但是那样带来的多个method一起的action的field混淆不清,所以,xyz还是以注解代替set/get |
|
返回顶楼 | |