2011-11-10 8 views
2

私はクラス「CouponAction」に、initCouponとaddCouponの2つのメソッドを用意しています。私は、すべてのメソッドを検証しようとするクラスレベルではなく、addCouponメソッドの検証だけを必要とします。方法とStruts 2による検証クラスレベルではなく、メソッドレベルのコンビニエンスプラグイン

このクラスは、この

@Scope("prototype") @Controller 

@Namespace("/coupon") 

public class CouponAction extends BaseAjaxAction<Coupon> { 

............ 

@Action(value = "initPaymentCoupons", results = { 

@Result(location = "/jsp/order/coupon/paymentCoupon.jsp", name = "success") 

    }) 

public String initCoupons(){ 

........ 

} 


@Validations(requiredFields = { 

@RequiredFieldValidator(fieldName = "couponCode", type = ValidatorType.FIELD, message = "Enter a coupon code") 
}) 

@Action(value = "/addCoupon", [email protected]("jsonValidationWorkflowStack"), 
      results = { 

@Result(location = "/jsp/order/coupon/paymentCoupon.jsp", name = "success") 

}) 

public String addCoupon() { 

....... 

} 

のようになりますそれから私は得る:

2011-11-10 00:44:13,567 ERROR org.apache.struts2.components.ActionComponent.error:38 - Could not execute action: /coupon/initCoupons 
No result defined for action vervik.actions.order.CouponAction and result input 

IVが見られるすべての例は、クラスレベルの検証アノテーションを使用しています。 xmlを使用したときにファイルがありました: CouponAction-addCoupon-validation.xml addCouponメソッドの検証のみです。

検証アノテーションを使用するにはどうすればよいですか?

ありがとうございます。

出典:

http://struts.apache.org/2.1.6/docs/convention-plugin.html#ConventionPlugin-InterceptorRefannotation

http://struts.apache.org/2.0.14/docs/annotations.html

答えて

1

何私は承知していますが、複数のメソッドが同じクラスに異なるアクションをマッピングするために使用される、とされている場合は、それらの一つは@Validations、それらと注釈されているということですすべてのアクションに対してバリデータがトリガーされます。

解決策は、@SkipValidationまたはvalidateAnnotatedMethodOnlyと注釈付きで使用されているように見えますが、「検証」インターセプタではtrueに設定されています。でも私は、アノテーションを使用して、このようなケースで働いていないので、これはあなたのために働くことを願っていますけれども

<interceptor-ref name="validation"> 
    <param name="validateAnnotatedMethodOnly">true</param> 
    <param name="excludeMethods">input,back,cancel,browse</param> 
</interceptor-ref> 

は次のリンク

Struts2 Validation

を参照してください。

+0

完璧、ありがとう、これは解決策です。 –

+0

あなたは歓迎です:) –

1

メソッドレベルで@SkipValidationアノテーションを使用すると、initCoupons()メソッドをバイパスできます。

+0

はい、同意します、ありがとう –

関連する問題