2009-02-02 32 views
5

Tôi đang sử dụng hỗ trợ bố cục (sitemesh) trong Grails hoạt động tốt. Tôi muốn điều chỉnh bố cục của mình để tùy thuộc vào việc người dùng có đăng nhập hay không.Truy cập mô hình từ chế độ xem bố cục trong Grails

My grails-app/views/layouts/main.gsp chứa đoạn mã sau:

<g:if test="${user}"> 
    Username: ${user.username} 
</g:if> 

Tuy nhiên, dường như nếu bố trí GSP: s không thể truy cập các mô hình và do đó người sử dụng biến (Tôi nhận được một "Không có phiên" ngoại lệ khi cố gắng). Cách đề xuất để bố trí của tôi phụ thuộc vào việc người dùng có đăng nhập hay không?

Cảm ơn trước!

Trả lời

9

Tôi khuyên bạn nên sử dụng yêu cầu hoặc phạm vi phiên cho mục đích đó. Có lẽ cách DRY nhất là cư trú phạm vi là một bộ lọc. Ví dụ trong file grails-app/conf/SecurityFilters.groovy (bạn sẽ cần phải tạo ra nó):

class SecurityFilters { 

    def filters = { 
     populateCurrentUser(controller: '*', action: '*') { 
      before = { 
       request.user = User.get(session.userId) 
      } 
     } 
    } 
}  

Ví dụ giả định rằng bạn lưu trữ các id của người dùng hiện trong thuộc tính phiên "userId" và bạn có một lớp "Người dùng" tên miền. Sử dụng nó trong bố cục đơn giản như sau:

<g:if test="${request.user}"> 
    Current User: ${request.user.username} 
</g:if>