1

「ストレージ」ポートレットがあります。 ここに画像の説明を入力

[ブックを追加] をクリックします。

ここに画像の説明を入力

しかし、私の本に著者の名前を追加する機会が必要です。そこで、新しいエンティティ「作成者」を使用して新しいプロジェクト、新しいサービス ビルダーを作成し、作成者も追加できるようになりました。しかし、「本を追加」をクリックしたときに既存の著者のドロップダウン メニューを作成するにはどうすればよいですか? そのフィールドを新しいテーブル「作成者」にバインドするにはどうすればよいですか?

4

1 に答える 1

5

著者用に別のプロジェクトを作成する必要はありません。本エンティティと同じサービス ビルダーで著者エンティティを追加し、本と著者の主キーを保持する別のテーブルへの参照を追加します。 service.xmlになり得る:

<service-builder package-path="com.myproject.db">
<author>SO</author>
<namespace>myp</namespace>
<entity name="Book" local-service="true" remote-service="true" cache-enabled="false">
<column name="bookId" type="long" primary="true" />
<column name="name" type="String" />
<column name="description" type="String" />
<column name="price" type="long" />
<column name="author" type="Collection" entity="Author" mapping-table="Author_Books"/>
</entity>
<entity name="Author" local-service="true" remote-service="true" cache-enabled="false">
<column name="authorId" type="long" primary="true" />
<column name="authorName" type="String" />
<column name="books" type="Collection" entity="Book" mapping-table="Author_Books" />
</entity>
</service-builder>

このポートレットをデプロイすると、 と の複合キーを持つ別のテーブルが作成されmyp_Author_Booksます。ブックフォームのレンダリング方法よりも追加authorIdbookId

List<Author> authorList=AuthorLocalServiceUtil.getAuthor(0, AuthorLocalServiceUtil.getAuthorCount()); renderRequest.addAttribute("listAuthor",authorList )

この属性を jsp で使用してc:forEachaui:select次のようにドロップダウンを作成します。

<aui:select name="author" label="Author Name">
    <c:forEach var="currAuthor" items="${listAuthor}">
        <aui:option value="${currAuthor.authorId}" label=" ${student.authorName}"></aui:option>
    </c:forEach>
</aui:select>
于 2016-09-03T15:57:23.587 に答える