используйте xx.contain (xxx) в теге struts2 - PullRequest
0 голосов
/ 31 марта 2011

Привет: Это связанные агентства в моем приложении:

   @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;
}

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

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

<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>

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

1 Ответ

1 голос
/ 31 марта 2011

По этой строке

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

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

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

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

...