2011-03-31 1 views
0

Привет: Это родственные eneities в моем приложении:использование xx.contain (ххх) в Struts2 теге

@Entity 
    @Table(
      name = "t_user") 
public class User { 
    private int     id; 
    private List<RoleType>  role; 

    @ElementCollection(
      targetClass = RoleType.class) 
    @CollectionTable(
      name = "t_user_roles", 
      joinColumns = @JoinColumn(
        name = "user_id")) 
    @Enumerated(EnumType.STRING) 
    @LazyCollection(LazyCollectionOption.FALSE) 
    public List<RoleType> getRole() { 
     return role; 
    } 
    //seter and getter 
} 


public enum RoleType { 
    VIP, SysManger, Publisher; 
} 

Теперь в моей странице я хочу, чтобы построить страницу в соответствии с roletype текущего пользователя.

Так что мне нужно что-то вроде:

<s:set value="#session.current_user" var="cuser"/> 
<s:if test="#cuser.role.contains(com.test.entity.RoleType.Publisher)"> 
    <li><a href="common/listTask_userPub?uid=<s:property value='#cuser.id'/>">Tasks published by Me</a></li> 
</s:if> 

Но это не работает, так что я хочу знать, если есть какие-либо другие идеи встретиться с моим requriement?

ответ

1

По этой линии

<s:set value="#session.current_user" var="cuser"/> 

вы устанавливаете cuser простор для действий и уровня в гнезде линии, которую вы пытаетесь получить к нему доступ с уровня сеанса. я думаю, вам нужно сделать что-то вроде

<s:if test="%{(cuser.role).contains(com.test.entity.RoleType.Publisher)}"> 

Это мой высокий уровень, надеюсь, он может вам помочь.