Проверка с помощью плагина Struts 2 Convention на уровне метода, а не на уровне класса - PullRequest
2 голосов
/ 10 ноября 2011

У меня есть класс, CouponAction, с двумя методами, initCoupon и addCoupon.Я хочу только проверку метода addCoupon, а не уровня класса, где он пытается проверить все методы.

этот класс с методами выглядит примерно так

@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", interceptorRefs=@InterceptorRef("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

Во всех примерах, которые я видел, используется аннотация проверки на уровне класса.Когда я использовал 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

Ответы [ 2 ]

1 голос
/ 10 ноября 2011

Вы можете использовать аннотацию @SkipValidation на уровне метода, чтобы обойти метод initCoupons ().

1 голос
/ 10 ноября 2011

Что мне известно, так это то, что когда несколько методов используются для сопоставления различных действий в одном классе, и один из них помечен @Validations, эти валидаторы будут запускаться для всех действий.

Решение, похоже, использует аннотированный @SkipValidation или validateAnnotatedMethodOnly имеет значение true в перехватчике "validation".

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

см. Следующую ссылку

Проверка Struts2

хотя я и не работал с таким делом, используя аннотацию, поэтому надеюсь, что это сработает для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...