0
<portlet:actionURL name="addBook" var="addBookURL" />
<aui:form action="<%= addBookURL.toString() %>" method="post">

私はMVCポートレットクラス内にこれらの2つのメソッドを持っています

public void addBook(ActionRequest request, ActionResponse response) {

}

public void deleteBook(ActionRequest request, ActionResponse response) {

}

UIでは、ユーザーは[追加]、[書籍の削除]などのさまざまなアクションを実行できます

これはメソッドaddBookで正常に機能していますが、deleteBookアクションのUIにも別個のportlet:actionURLとauiformを記述する必要がありますか?

私はLiferayを初めて使用するので、ばかげた質問を許してください。

もしそうなら、どのようにして1ページに2つのフォームがあるのでしょうか?

4

1 に答える 1

2

アクション名と同じ数のメソッドが必要になります。

<portlet:actionURL name="addBook" var="addBookURL" />
<aui:form action="<%= addBookURL.toString() %>" method="post"> ... </aui:form>

<portlet:actionURL name="deleteBook" var="deleteBookURL" />
<aui:form action="<%= deleteBookURL.toString() %>" method="post"> ... </aui:form>

fyi: see what your actionURLs look like: <br/>
<%=addBookURL.toString()%><br/>
<%=deleteBookURL.toString()%><br/> 

メソッドを減らしたいが、アクション名を残したい場合は、processAction(ActionRequestリクエスト、ActionResponseレスポンス)をオーバーライドして、条件(アクション名)を自分で処理することもできます。1つのフォームが複数のアクションを実行する場合、1つのアクションでそれを処理し、取得するコンテンツ(たとえば、どのボタンが押されたか)を判別できます。または、Javascriptを使用して、送信時にフォームアクションURLを設定します。

于 2012-04-15T12:20:26.997 に答える