0

私はBooktitle、Authorのフォームを持っています。これらの2つのフィールドを検証する必要があります。フィールドのいずれかが空の場合、フィールドが必須であるため、メッセージを表示する必要があります。これを達成するにはどうすればよいですか。Googleでこれを検索し、変更しました以下のようなコード。

<script>
    $(document).ready(function() {
        $("#_fm").validate();
        var element = document.getElementById("_bookTitle");
        element.className = element.className + " required";
        element = document.getElementById("_author");
        element.className = element.className + " required";
    });
</script>
<aui:form name="fm" method="POST" action="<%=updateBookURL.toString()%>">
    <aui:input name="bookTitle" label="Book Title" />
    <aui:input name="author" />
    <aui:button type="submit" value="Save" />
</aui:form>

portlet.xml は次のとおりです。

<portlet>
        <portlet-name>libraryportlet</portlet-name>
        <icon>/icon.png</icon>
        <instanceable>false</instanceable>
        <header-portlet-css>/css/main.css</header-portlet-css>
        <header-portlet-javascript>https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js</header-portlet-javascript>
        <header-portlet-javascript>https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js</header-portlet-javascript>
        <header-portlet-javascript>
            http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js
        </header-portlet-javascript>
        <footer-portlet-javascript>
            /js/main.js
        </footer-portlet-javascript>

        <css-class-wrapper>libraryportlet-portlet</css-class-wrapper>
    </portlet>

しかし、成功しません。私が間違っているところです。誰か教えてください。ありがとう。

4

1 に答える 1

0

liferay 独自の Alloy バリデーターを使用してフォームを検証できます。これにより、フォームの検証に jquery および jquery validate を使用する必要がなくなります。

まず、バリデータ クラスを jsp にインポートする必要があります。

<%@ page import="com.liferay.portal.kernel.util.Validator" %>

そして、各入力フィールドのルールを定義することができます:

<aui:form name="fm" method="POST" action="<%=updateBookURL.toString()%>">
    <aui:input name="bookTitle" label="Book Title">
        <aui:validator name="required"  />
    </aui:input>

    <aui:input name="author">
        <aui:validator name="required"  />
    </aui:input>

    <aui:button type="submit" value="Save" />
</aui:form>

これにより、いずれかのフィールドが空の場合、フォームが送信されなくなります。Bondye が言ったように、Alloy はユーザーが簡単に無効にできる Javascript の上で実行されるため、サーバー側の検証も行う必要があるかもしれません。そのため、空のフォームが送信された場合にアプリケーションが未処理の例外にさらされます。

于 2013-01-03T20:48:50.477 に答える