6

私はGrailsを初めて使用し、非常に単純な例を機能させようとしています。フォームを送信して、画面に「Hello World」と表示するだけです。次のコントローラーで構成されます。

package surface

class SearchController {

 def index() {
    render(view: "search")
 }

 def result() {
    render "Hello World"
 }
}

および次の形式のビュー:

<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<g:form name="searchform" url="result">
<g:textArea cols="80" rows="30" name="searchfield"/>
<g:actionSubmit value="Ask"/>
</g:form>
</body>
</html>

"Ask" をクリックすると 404 エラーが表示されますが、ブラウザは "/surface/search/result" に正しくアクセスします。フォームを使用せずにそのアドレスを直接入力すると、「Hello World」が正しく表示されます。これはおそらく簡単なことですが、ドキュメントからこれが機能しない理由を見つけることができないようです。

4

1 に答える 1

5

@Tom Metz の回答を補足すると、Grails コントローラー構造で留意する必要があるのは、すべての public メソッドがactionと見なされることです。このアクションは URL にマップされます。あなたの例では、(コントローラー+アクション)が存在/search/index/search/resultます。

g.formこれはそう言っているので、のドキュメントは正しいです。

url (オプション) - アクション、コントローラー、ID などを含むマップ。

したがって、ビューを修正するには、アクションをコメントとして設定するか、URL の使用方法を調整できます。

<g:form name="myForm" url="[action:'result',controller:'search']">
于 2012-12-01T18:44:41.660 に答える