Для проверки полосы сообщение об ошибке возвращается на новую страницу - PullRequest
2 голосов
/ 20 октября 2011

У меня проблема с использованием метода проверки Stripes. Это работает, но вместо того, чтобы возвращать ajax-сообщение для отображения сообщения об ошибке в div ошибки, я получаю совершенно новую страницу с этим сообщением об ошибке.

Я собираюсь в точности как пример с этой страницы: http://www.stripesframework.org/display/stripes/AJAX

Таким образом, когда сообщение проверки должно заменить html

, оно просто открывает новую страницу с сообщением об ошибке.

любая помощь будет очень признательна.

Спасибо!

JSP:

< td>
< div style= left" id="searchError"></ div>
< /td>
< td style="text-align: right">
< stripes:submit name="search" onclick="invoke(this.form, this.name);">
< fmt:message key="search.submit"/>
</ stripes:submit>
< input name="" type="text" value="" style="display:none" />            
</ td>

JS:

function invoke(form, name) {
    var params = $(form).serialize();
    $.ajax({
        url: form.action,
        data:name+"&"+params,
        type:'post',
        dataType: 'html',
        success: function(data) {
            if (data.indexOf("link:") == 0) {
                window.location = data.substring(5);
            }  else {
                $('#searchError').html(data);
            }
        }
    });
    return false;
};

ActionBean:

@Validate(mask="\\d*")
private String poNo;

1 Ответ

1 голос
/ 31 октября 2011

Реализует ли ваш ActionBean ValidationErrorHandler?

Похоже, что разрешение, которое вы получаете при сбое проверки, является getContext (). GetSourcePageResolution () ...

Ваш метод проверки должен быть реализованследующим образом:

/** Converts errors to HTML and streams them back to the browser. */
public Resolution handleValidationErrors(ValidationErrors errors) throws Exception {
    StringBuilder message = new StringBuilder();

    for (List<ValidationError> fieldErrors : errors.values()) {
        for (ValidationError error : fieldErrors) {
            message.append("<div class=\"error\">");
            message.append(error.getMessage(getContext().getLocale()));
            message.append("</div>");
        }
    }

    return new StreamingResolution("text/html", new StringReader(message.toString()));
}
...