Невозможно отправить форму в распорках 2 при использовании проверок

Последние несколько часов я сталкиваюсь с проблемой: когда я использую проверки в своем приложении, я получаю пустые значения на стороне сервера.

Мой файл действий выглядит так:

@ParentPackage("interceptions")
@InterceptorRefs({  
    @InterceptorRef("loggingStack")  
})
@Results({@Result(name="login",location="login.layout",type="tiles")})
public class LoginAction extends ActionSupport implements ModelDriven{
    UpUser user = new UpUser();
    String customField;
    @Validations(requiredFields={@RequiredFieldValidator(type=ValidatorType.SIMPLE,fieldName="customField",message="YOU")})   
    @Action(value="/login",results={
            @Result(name="success",location="secure.layout",type="tiles")})
    public String execute() {
        if(user.getUserScreenName()==null)
            return "login";
        System.out.println(userBo.verifyUser(user));
        return "success";
    }
    public Object getModel(){
        return user;
    }
    @VisitorFieldValidator(message="")  
    public UpUser getUser() {
        return user;
    }

    public void setUser(UpUser user) {
        this.user = user;
    }
    public String getCustomField() {
        return customField;
    }
    public void setCustomField(String customField) {
        this.customField = customField;
    }

}

в моем struts.xml я определил мой перехватчик как:

<package name="interceptions" extends="struts-default" namespace="/">
<result-types>
  <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
</result-types>
   <interceptors>
            <interceptor name="mylogging" 
                class="com.kiosk.lab.interceptor.LoggingInterceptor">
            </interceptor>
            <interceptor-stack name="loggingStack">
                <interceptor-ref name="mylogging" />
                <interceptor-ref name="validation">
    <param name="validateAnnotatedMethodOnly">true</param>
    <param name="excludeMethods">input,back,cancel,browse</param>
</interceptor-ref>
                  <interceptor-ref name="workflow">
                    <param name="excludeMethods">input,back,cancel,browse</param>
                </interceptor-ref>

            </interceptor-stack>
        </interceptors>

</package>

JSP, через который я отправляю данные:

<s:submit cssClass="loginButton"/>

Сейчас я не уверен в этой проблеме, но я даже удалил ActionSupport из своего действия, добавил и протестировал его обоими способами, но не повезло. Во-вторых, если я закомментирую часть перехвата в моем struts.xml и уберу тэг validations из моего действия, то все будет работать нормально. В противном случае значение customField на стороне сервера равно нулю.

Обновления:

После нескольких ответов это в порядке проверки значений хорошо, потому что все значения обнуляются в Java, и это показывает фактическое сообщение об ошибке. Но, тем не менее, я столкнулся с аналогичной проблемой, что это не отправка значений из JSP. Как, это всегда приходит ноль, и он продолжает публиковать те же сообщения об ошибках проверки.

1 ответ

Решение

Вы должны добавить ниже, чтобы можно было запустить перехватчик проверки, который определен в defaultStack

<interceptor-ref name="defaultStack" />
Другие вопросы по тегам