5

ユーザーが JSF のドロップダウン リストからコレクションのアイテムを選択できるようにしようとしています。これは私が使用しているコードです:

<f:view>
 <h:form id="insert">
    <h:selectOneMenu value="#{MyBean.user}">
        <f:selectItems value="#{MyBean.userList}" var="currentUser" itemValue="#{currentUser.username}" itemLabel="#{currentUser.username}"/>
     </h:selectOneMenu>
     <h:commandButton value="Insert" action="#{AuctionBean.insertItem}"/><br>
 </h:form>
</f:view>

これは MyBean のコードです。

@ManagedBean
public class MyBean{
    private String user;
    private Collection<User> userList;

    @PostConstruct
    public void init() {
                this.userList = UserRepository.getInstance().findAllUsers();
    }
    ...
    public String insertItem() {
         System.out.println("The selected user is " + this.user);
         ...
         return ("successfulInsertion");
    }
...
}

そして、必要に応じて、ユーザーのゲッターとセッター:

public String getUser() {
        return this.user;
    }

    public void setUser(String user) {
        this.user = user;
    }

私の問題は、「選択されたユーザーは」と表示されたときに、user.toString() ではなく、userList.toString()! と書かれていることです。正しく設定されていないselectOneMenuのようなものですが、私はそれについてたくさん検索しました。誰でも助けることができますか?ありがとう、AN

4

2 に答える 2

3

<f:selectItems>サポートしていませんCollectionListまたはMapまたはが必要ですObject[]

以下も参照してください。


更新: Facelets の代わりに JSP を使用していることがわかりました。新しい JSF 2.x タグと属性は、JSPでは使用できません。これには、<f:selectItems var>. JSP で使用できるのは、古い JSF 1.x のタグと属性のみです。JSF 2.0 以降、JSP は廃止され、Facelets に引き継がれました。代わりに Facelets を使用する必要があります。

以下も参照してください。

于 2012-06-10T14:02:14.890 に答える
1

<f:ajax/>あなたに追加<h:selectOneMenu value="#{MyBean.user}">

このような

<h:selectOneMenu value="#{MyBean.user}">
    <f:ajax/>
    <f:selectItems value="#{MyBean.userList}" var="currentUser" itemValue="#{currentUser.username}" itemLabel="#{currentUser.username}"/>
</h:selectOneMenu>

これにより、ドロップダウンから値を選択するたびに、選択内容がサーバーに送信されます...

また

ボタンに追加<f:ajax execute="@form"/>して、呼び出しの前にドロップダウンメニューの選択を送信しますinsertItem

<h:commandButton value="Insert" action="#{AuctionBean.insertItem}">
    <f:ajax execute="@form"/>
</h:commandButton> 
于 2012-06-10T13:43:06.467 に答える