0

Bean パラメータに応じてアイテムを表示できる h:selectOneMenu を使用する必要があります。したがって、ユーザーが「管理者」の役割を持っている場合、最初の項目は「管理者」、2 番目の項目は「ユーザー」、またはその逆になります。これが私のコード例です

<h:selectOneMenu id="role" value="#{adminBean.role}">
    <h:panelGroup rendered="#{adminBean.role == 'User'}" >
        <f:selectItem itemLabel="User" itemValue="User"/>
        <f:selectItem itemLabel="Admin" itemValue="Admin"/>
    </h:panelGroup>
    <h:panelGroup rendered="#{adminBean.role == 'Admin'}" >
        <f:selectItem itemLabel="Admin" itemValue="Admin"/>
        <f:selectItem itemLabel="User" itemValue="User"/>
    </h:panelGroup>
</h:selectOneMenu> 

ただし、このコードはまったく機能しません。選択したリストは完全に空です

4

3 に答える 3

1

これを達成する方法は次のとおりです。2つを使用f:selectItemし、条件に基づいてそれらの値を交互に使用します

<h:selectOneMenu id="role" value="#{adminBean.role}">
    <f:selectItem itemLabel="#{(adminBean.role == 'User')?'User':'Admin'}" 
        itemValue="#{(adminBean.role == 'User')?'User':'Admin'}"/>
    <f:selectItem itemLabel="#{(adminBean.role == 'User')?'Admin':'User'}" 
        itemValue="#{(adminBean.role == 'User')?'Admin':'User'}"/>
</h:selectOneMenu> 
于 2013-02-28T11:16:44.793 に答える
0

PostConstruct ソリューション

<f:selectItems value="#{adminBean.options}">

.

@PostConstruct
public void postConstruct(){
    this.role = loggedInUser.getRole();
    this.options = service.getOptionsByRole(role);
}

public List<SelectItem> getOptions() {
    return options;
}

単一行の if-else ステートメント ソリューション

<f:selectItems value="#{adminBean.role == 'User' ? adminBean.userOptions : adminBean.adminOptions}">

パラメータ受け渡しソリューション

<f:selectItems value="#{adminBean.getOptionsByRole(adminBean.role)">

.

public List<SelectItem> getOptions(String role) {

    if (role.equals("User")) {
        return userOptions;
    }

    return adminOptions;
}

条件ゲッター メソッド (非推奨)

<f:selectItems value="#{adminBean.options">

.

public List<SelectItem> getOptions() {

    if (role.equals("User")) {
        return userOptions;
    }

    return adminOptions;
}
于 2013-02-28T11:54:27.553 に答える
0

この方法で試してください、うまくいくことを願っています

<c:set var="role" value="${adminBean.role}"/>
 <c:choose><c:when test="${role eq "User" }" >
   <h:selectOneMenu id="role" value="#{adminBean.role}"  >
           <f:selectItem itemLabel="Admin" itemValue="Admin"/>
           <f:selectItem itemLabel="User" itemValue="User"/>
   </h:selectOneMenu>
</c:when></c:choose>

同様の条件を追加できますAdmin

于 2013-02-28T10:37:40.827 に答える