struts2.0 验证不执行

page:
<@s.submit value="保存为草稿" method="saveDraftOrder" cssClass="btn_w65px"/>
<@s.submit value="提交" method="saveFormalOrder" cssClass="btn_w65px"/>

xml:







validation-name:

ProductOrderAction-saveDraftOrder-validation.xml
ProductOrderAction-saveFormalOrder-validation.xml

ClassName:
ProductOrderAction.java

我要验证 ProductOrderAction 的 saveDraftOrder && saveFormalOrder 方法
配置文件不起作用。

自己search 了一下 官网上这样说 貌似对我这个没什么用。。。

  1. To use a postfix wildcard, just move the asterisk and add an underscore.


  2. From the framework's perspective, a wildcard mapping creates a new "virtual" mapping with all the same
  3. attributes as a conventional, static mapping. As a result, you can use the expanded wildcard name as the name
  4. of validation, type conversion, and message resource files, just as if it were an Action name (which it is!).

  5. Crud_input-validation.xml
  6. Crud_delete-conversion.xml

:oops: 。请各位赐教下。。感激万分!
怎么没人理。。。。
[b]问题补充:[/b]
配置没有问题,action 里的方法可以运行
只是 验证规则没有执行
我估计是提交方式 的问题
ps:我是用相同的action name 但是method 不同

说句题外话,你的配置里面错误还挺多。

再帮你改一下
[code="java"]<!-- 保存正式订单信息 -->

ProductOrderAction-saveOrder-validation.xml
ProductOrderAction-updateDraftOrderInfo-validation.xml

<@s.submit value="保存为草稿" action="saveOrder" cssClass="btn_w65px"/>

<@s.submit value="提交" action="updateDraftOrderInfo" cssClass="btn_w65px"/>[/code]

[code="java"]
page:
<@s.submit value="保存为草稿" method="saveDraftOrder" cssClass="btn_w65px"/>
<@s.submit value="提交" method="saveFormalOrder" cssClass="btn_w65px"/>

xml:

[/code]

仔细看一下你的action是不是配置错误了?以下两行
[code="html"]
<@s.submit value="保存为草稿" method="saveDraftOrder" cssClass="btn_w65px"/>
<@s.submit value="提交" method="saveFormalOrder" cssClass="btn_w65px"/>[/code]
好像和
action中的name属性名字不匹配哦,
而且两个action中的method都是同名的。
[code="html"]method="saveFormalOrder"[/code]
是不是我问题理解错误了?

validation-name:

ProductOrderAction-[color=red]saveDraftOrder[/color]-validation.xml
ProductOrderAction-[color=red]saveFormalOrder[/color]-validation.xml

红色标记的地方是下面定义的名字才对(用红色标记出来了)

漏了一个 :oops:

你的校验配置文件ProductOrderAction-saveDraftOrder-validation.xml的命名有问题。按照我上面说的改就可以了。

[quote]自己search 了一下 官网上这样说 貌似对我这个没什么用。。。

  1. To use a postfix wildcard, just move the asterisk and add an underscore.


  2. From the framework's perspective, a wildcard mapping creates a new "virtual" mapping with all the same
  3. attributes as a conventional, static mapping. As a result, you can use the expanded wildcard name as the name
  4. of validation, type conversion, and message resource files, just as if it were an Action name (which it is!).

  5. Crud_input-validation.xml
  6. Crud_delete-conversion.xml [/quote]

看来你还是不明白,详细的解释一下:
对于这个action配置:

如果action类里面有一个input方法,
那么就有了一个名字叫Crud_input的action.
配置这个action的校验的xml文件名就叫做:Crud_input-validation.xml
然后画面请求Crud_input的时候,就调用Crud_input-validation.xml来进行验证。

这个就是struts2的校验配置文件的命名规则。按照action的方法名来配置是没有用的。

你用了这样的定义方式。
[quote]<!-- 保存正式订单信息 -->

[/quote]

就产生了saveOrder和updateDraftOrderInfo两个Action,虽然对应的是同一个方法,但是配置校验文件的只要配置actionName对应的校验文件,
[quote]ProductOrderAction-saveOrder-validation.xml
ProductOrderAction-updateDraftOrderInfo-validation.xml [/quote]
就可以进行不同的验证。然后具体到你这儿页面上面使用的时候,直接在调用action的
submit按钮里面定义action属性就可以了,不用method属性。

<@s.submit value="保存为草稿" action="saveOrder" cssClass="btn_w65px"/>

<@s.submit value="提交" action="updateDraftOrderInfo" cssClass="btn_w65px"/>