0

アプリケーションのどこからでもアクセスできるように、ユーザーの Photo 変数をセッションに保存する方法を知る必要があります。

4

3 に答える 3

1

元のコントローラーでのセットアップ:

session.photo = photoVariable

別のcontrolelrに入る:

session.photo

GSPからアクセスを取得します。

${session.photo}

http://grails.org/doc/2.1.0/guide/theWebLayer.html#controllersAndScopesを参照してください

于 2013-01-18T05:52:43.837 に答える
0

Igor の回答を使用して、写真をセッションに保存することをお勧めします。次のように Base64 でエンコードできます。

 data:${user.photoMimeType};base64,${user.photo}

ここで、photoMimeType は通常「image/jpeg」または「image/png」であり、user.photo は Base64.encode(image bytes) としてデータベースに保存されます。

あなたの見解では、次に使用することができます

<img src="${session.photo}"/> 

html で写真がインライン化される場所。このソリューションの欠点は、すべての html に画像がインライン化されていることであり、これはキャッシュには適していません。

代替ソリューションは次のとおりです。

ログインコントローラーで:

 session.photoUrl = g.createLink(controller: 'user', action: 'img', id: user.id)

あなたのgspで:

 <img src="${session.photoUrl}"

そして、ユーザーコントローラーで:

def img = {
    def user = User.get(params.id)
    if(user) {
        response.setContentType(user.imageMimeType)
        response.outputStream << user.imageData
    } else {
        log.debug "not found"
        response.sendError(HttpServletResponse.SC_NOT_FOUND)
    }
}

これがあなたが使用できる解決策であることを願っています

于 2013-01-18T11:46:26.370 に答える
0

セットタグの助けを借りて、セッションを通じてアプリのどこでもプロフィール写真を機能させることができました。http://grails.org/doc/2.1.0/ref/Tags/set.html 今私が直面している問題は、セッション ユーザーを変更すると、プロファイル画像はすべて正しく変更されますが、サムネイル画像は、ページを一度更新します。

誰でもこれを説明してください。あなたの助けに感謝。ありがとう

誰でもこのプロフィール画像の機能/アクションを説明できますか

def profilePhoto = {
    response.setContentType('image/jpeg')
    response.setHeader('Cache-control', 'no-cache')
    def userId = session.selectedUser.id
    if(params.userId){
      userId = params.userId
    }
    if(params?.id != null && !(params?.id.empty)){
      params.maxWidth?: 190.00
      params.maxHeight?: 190.00
      response.outputStream << imageProxyService.loadThumbnailImage(params.id, securityService.passwordEncoder(userId.toString()))
    }
  }
于 2013-01-20T23:30:42.970 に答える