2016-07-05 10 views
0

私はちょうど非常にシンプルなコントローラをセットアップして非常に単純なビューを返すようにしようとしていますが(非常にシンプルなレイアウトで)、コンテンツタイプに関連したエラーが続きます。Grailsでコンテンツタイプを設定するにはどうすればよいですか?

class SimpleController { 
    def index() { 
     render(view: "simple") 
    } 
} 

_simple.gsp:

<html> 
<head> 
    <meta name="layout" content="blank" /> 
</head> 
<body> 
Simple test page. 
</body> 
</html> 

blank.gsp:

<!DOCTYPE html> 
<html> 
<head> 
    <g:layoutHead /> 
</head> 
<body> 
    <g:layoutBody /> 
</body> 
</html> 

それはそれよりもはるかに簡単に取得していません。コントローラメソッドが正しく見つかった、問題はレンダリング中であるようです。 [GET]/testApp /がリクエストを処理するときにNullPointerExceptionが発生しました。エラーが発生しました:

2016-07-05 16:07:14,931 [http-bio-8085-exec-5] ERROR errors.GrailsExceptionResolver - シンプル/ Stacktraceは次のとおりです。 メッセージ:null Line |方法 - >> 15 | in com.opensymphony.module.sitemesh.filter.HttpContentType


| 49 | com.opensymphony.sitemesh.compatability.PageParser2ContentProcessorを構築する | 89 | getContent。 。 。 。 。 。 。 。 。 。 org.codehaus.groovy.grails.web.sitemesh.GrailsContentBufferingResponse | 107 | getContent in org.codehaus.groovy.grails.web.sitemesh.GrailsLayoutView

デバッグでは、context.contentTypeがnullであることが確認されます。コンテンツタイプを設定する方法は4つありますが、どちらも機能していないようです。

<%@ page contentType="text/html;charset=UTF-8" %> 

ビューの上部にあります。

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

ビューの先頭タグにあります。

contentType: "text/html" 

コントローラのレンダリングメソッドに渡されました。

response.setContentType("text/html") 

コントローラメソッドで呼び出されます。

これは、他の多くのコントローラとビューが完全に正常に動作する既存のプロジェクトにあります。新しいコントローラとビューを追加する必要があります。これはもともとは既存のワークピースをコピーしたものです。それがうまくいかなかったとき、私はできるだけシンプルになるように問題を減らそうとしましたが、上のコードで終わってしまいました。これはまだ動作していません。

Btw、これはGrails 2.5.1(このバージョンに固執しています)です。

答えて

2

あなたが所持しているものは動作するはずです。

デフォルトのURLマッピングを使用している場合、あなたはあなたのビューsimple.gsp代わり_simple.gsp

のそれはあなたが簡単なアプリを再作成しようとするかもしれないほど単純ではない場合は名前を付ける必要があります。

+0

ありがとうございます。 _が必要なときには、私は決してgrailsで決めることができません。私がコピーしたコードは_を使用しています。ビューリゾルバが指定されたビューを見つけることができないというエラーを投げなかったので、私はそれを変更することも考えなかった。 –

1

さらに簡単で問題を解決することができます。

class SimpleController { 
    def index() { 

    } 
} 

名前を_simple.gspからindex.gspに変更し、views/simple/directoryに配置する必要があります。 blank.gspがviews/layoutsディレクトリにあれば、今すぐ動作するはずです。

+0

これらの答えはどちらもうまくいきましたが、私の目的のためにjmallenの答えはより良い一致です。 –

0

@jmallenによれば、ページの名前は "simple.gsp"にする必要があります。

<g:render template="/layouts/menu" /> 

_menu.gsp 

という名前のメニューのためのGSPファイルより:冒頭 アンダースコアは、次の文を使用して、他のページに含めることができる私はテンプレートのみ、GSP-ファイルについて知っている何か、です
関連する問題