設定項目の値をAjaxでチェックする。

config.jelly

        <f:entry title="${%title}" >
          <f:textbox name="doc.title" value="${doc.title}"
                     checkUrl="'descriptorByName/DocumentLinksPublisher/checkTitle?value='+escape(this.value)"/>
        </f:entry>

checkUrlに上記のように記述すると、DocumentLinksPublisherのDescriptorのdoChecktTitle()が呼ばれる。その結果により、メッセージが適当に表示される。

doCheckTitle

        public FormValidation doCheckTitle(@QueryParameter final String value) throws IOException, ServletException {
            Hudson.getInstance().checkPermission(Hudson.ADMINISTER);
            LOGGER.finest("value = '" + value + "'");
            final String v = Util.fixEmptyAndTrim(value);
            if (v == null) {
                return FormValidation.error("REQUIRED");
            }
            return FormValidation.ok();
        }

引数を"@QueryParameter String value"とすることで、クライアントから送られてきたvalueを取得できる。Formvalidation.error("エラーメッセージ")を返すことで、クライアントにエラーメッセージを表示することができる。問題なければ、FormValidation.ok()を返す。

実行結果

未入力の場合

思った通り。

入力した場合

よし。

これで完璧と思うよね


日本語を入れてみる。

why? 日本語を入れるとvalueがnullになります。id:kkawa さん、何か間違ってるでしょうか。