<action name="test" class="TestAction">
  <result name="input">input.jsp </result>
  <result>success.jsp </result>
</action>疑惑:
1、配置struts验证框之后  若数据较验失败 则不会创建该Action实例,直接返回配置的input.jsp页面?
2、第一次请求该Action(GET方式)获取表单页面(input.jsp) 错误信息会直接显示在页面上。我希望当请求为GET方式时,不进行数据较验,直接返回input.jsp 当POST方式时,进行数据较验,而且保证浏览器地址不发生改变,是否可行?
3、用户第一次请求该Action 需要在input.jsp初始化一些数据,该如何实现?
struts2使用起来很方便,但唯独这3点问题困扰了我很久,一直没敢用struts的验证框架。今天把这些问题理出来,希望热心人帮助

解决方案 »

  1.   

    1、配置struts验证框之后 若数据较验失败 则不会创建该Action实例,直接返回配置的input.jsp页面?
    这个是使用struts2的默认行为,在启用服务器端的验证框架后,如果验证失败,则默认转到input所标识的视图(默认是input.jsp,看你的个人设定)2、第一次请求该Action(GET方式)获取表单页面(input.jsp) 错误信息会直接显示在页面上。我希望当请求为GET方式时,不进行数据较验,直接返回input.jsp 当POST方式时,进行数据较验,而且保证浏览器地址不发生改变,是否可行?你可以使用一个action来集成crud操作,但在struts配置文件中定义两个action来分别对应read和saveOrUpdate的操作,一个使用验证框架,一个不使用.3、用户第一次请求该Action 需要在input.jsp初始化一些数据,该如何实现?
    struts2中的preparable接口就是做这个用的。你实现这个接口然后将预先初始的数据在这里加载。
    建议你空实现prepare()方法,然后针对action中的add()和update()分别实现  prepareAdd()和prepareUpdate()方法 来针对不同的CRUD情形
      

  2.   

    谢谢,第二个问题如果不使用struts的验证框架,后台验证有什么其它好的实现呢?
      

  3.   


    自己覆盖validataion方法也可以 不过方面的话还是用框架,进行服务器端的验证前端js验证也 要加上