Почему не моя игра! ошибки проверки отображаются? - PullRequest
1 голос
/ 17 ноября 2011

Я пытаюсь следовать документации Play! Для проверки .У меня есть контроллер с 3 действиями:

  1. add () - форма «добавить сайт»
  2. добавлено () - вызывается при отправке формы добавления, выполняет ли фактическое добавление.
  3. edit () - успешный вызов add () приводит к редактированию добавленного веб-сайта (при неудачном добавлении возвращается форма add ()).

При сбое проверки Iперенаправлен на действие add (), как и планировалось.Шаблон #{ifErrors} работает (отображается <h1>Oops…</h1>) ... но есть две проблемы:

  1. Параметр URL веб-сайта не «мигает» - в форме добавления он непоявляются в соответствующем поле.
  2. Конкретные ошибки не появляются - это поле остается пустым: <span class="error">#{error 'website.url' /}</span>

Чего мне не хватает?

МойКонтроллер:

public class Sites extends Controller {
    private static final WebsiteRepository websiteRepo = new WebsiteRepository();

    public static void add() {
        render();
    }

    public static void added(@Valid Website website) {
        if (Validation.hasErrors()) {
            Validation.keep();
            params.flash();
            add();
        }

        websiteRepo.save(website);
        edit(website.id);
    }

    public static void edit(long websiteId) {
        Website website = websiteRepo.getById(websiteId);
        render(website);
    }

}

add.html

<div id="addsite">

    <h1>Add a new site</h1>

    #{ifErrors}
   <h1>Oops…</h1>
    #{/ifErrors}

    #{form @added()}

        #{if flash.error}
            <p class="error">
                &{flash.error}
            </p>
        #{/if}
        #{if flash.success}
            <p class="success">
                &{flash.success}
            </p>
        #{/if}


        <p id="url-field">
            <label for="url">URL</label>
            <input type="text" name="website.url" id="url" class="url-field" value="${flash.url}" />
            <span class="error">#{error 'website.url' /}</span>
        </p>

        <p id="add-field">
            <input type="submit" id="add" value="Add" />
        </p>
    #{/form}
</div>

Ответы [ 2 ]

2 голосов
/ 17 ноября 2011

Неправильный формат значения, для сложных объектов:

${flash['website.url']}

Редактировать: я клонировал ваш репозиторий, и у вас есть следующие ошибки:

  • В вашем шаблоне замените $ {flash [website.url]} на $ {flash ['website.url']}
  • Вы пометили URL как @Required, но не как @URL; добавьте аннотацию @URL, и в сообщении об ошибке отобразится «Неправильный URL»
  • Требуется владелец, но его невозможно предоставить, поэтому для этого всегда будет ошибка проверки
0 голосов
/ 17 ноября 2011

Вместо вызова add () попробуйте:

 render("Sites/add.html", website);

где первый член - это путь к шаблону Add, а второй - параметр формы, полученный в вызове POST.

На первый параметр также можно ссылаться как "@add" (ярлык)

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