2012-06-08 73 views
1

我無法從SelectOneMenu中獲取所選項目。我向菜單提供一個ArrayList,並希望用戶選擇其中一個。我把菜單放在一個表單中,所以我有一個我打算用來執行選擇的commandButton。這個實現給了我這個錯誤:當我從菜單「user3」中選擇時,不能將類java.lang.String類型的user3轉換爲類java.util.ArrayList,所以它實際上正確地執行了選擇。該錯誤是指這條線JSF SelectOneMenu所選項目

<h:selectOneMenu value="#{user.myUsers}" 

這裏是我的XHTML產生的selectOneMenu用於的一部分。

<h:panelGrid columns="3"> 


        <h:form> 
        <h:selectOneMenu value="#{user.myUsers}"> 
         <f:selectItems value="#{user.myUsers }"/> 
        </h:selectOneMenu> 
        <h:commandButton value="#{msgs.remove_user}" action="#{user.select }" ></h:commandButton> 
        </h:form> 
        <h:outputText value="#{ user.select}"></h:outputText> 
      </h:panelGrid> 

這裏是我的UserBean:

@ManagedBean(name="user") 
@SessionScoped 
public class UserBean implements Serializable { 

private String selected; 


public ArrayList<String> getMyUsers()throws Exception 
{ 
    ArrayList<String> ret; 
    MySQLConnection conn = new MySQLConnection(); 
    try{ 
     ret = conn.getMyUsers(name); 
    }finally 
    { 
     conn.closeConnection(); 
    } 
    return ret; 
} 

public String getSelect() throws Exception 
{ 
    if (this.selected==null) return this.getMyUsers().get(0); 

    return this.selected; 
} 


public void setSelect(String s) 
{ 
    this.selected = s; 
} 
} 
+4

Psssh ..把你的鼠標在上面的'[selectonemenu]'你自己放在問題上的標籤,直到出現黑匣子,然後點擊* info *鏈接。 – BalusC

+0

Omg,謝謝,我從來沒有注意到這樣一個有用的選項! – gaffcz

回答

9

ArrayList中被映射到

<f:selectItems value="#{user.myUsers}"/>, 

和選擇後您嘗試選擇的值放到同一個列表:

<h:selectOneMenu value="#{user.myUsers}"> 

你SH在您的視圖中鏈接的managed bean中應該有一些對象(或者您的案例中的字符串),並填寫選定項目myUsers。例如:

private String selectedUser; // + appropriate getter and setter 

<h:selectOneMenu>應該像:

<h:selectOneMenu value="#{user.selectedUser}"> 

選擇的項目被前人的精力存儲在selectedUser到JSF生命週期的結束

+0

@BalusC的評論澄清了我。您剛發佈瞭解決方案的一部分,但謝謝。我雖然有一個問題:我如何禁用顯示的消息,指出沒有爲我的submit()方法生成的結果定義導航規則?如果我使用按鈕沒有任何反應(沒有選擇)。 – Pio

+1

我找到了解決辦法:我什麼都不會返回(無效),所以它不產生導航規則的消息 – Pio

+0

你自己想通了,這是很好的:-) – gaffcz

-2
<table class="tableClass" id="productDescriptionTable"> 
    <thead> 
     <tr class="trPDClass"> 
      <th class="thPDClass"></th> 
      <th class="thPDClass">Feature</th> 
      <th class="thPDClass">SubFeature</th> 
      `enter code here`<th class="thPDClass">Type</th> 
      <th class="thPDClass">Sub-Feature Value</th> 
      `enter code here`<th class="thPDClass">Is Active</th> 
      <th class="thPDClass">Deleted</th> 
     </tr> 
    </thead> 
    <tbody> 
     <tr class="trPDClass"> 
      <td class="tdPDClass" style="width: 30;" ><input type="checkbox" /></td> 
      <td class="tdPDClass"><input type="text" id="0PDfeature" name="PDfeature" /></td> 
      <td class="tdPDClass"><input type="text" id="0PDsubFeature" name="PDsubFeature" /></td> 
      <td class="tdPDClass"><input type="text" id="0PDtype" name="PDtype" /></td> 
      <td class="tdPDClass"> 
       <div id="0PDsubFeatureValueDiv" name="PDsubFeatureValueDiv"></div> 
      </td> 
      <td class="tdPDClass"> 
       <table class="radioClass"> 
        <tr> 
         <td width="24%"><input type="radio" name="PDisActive" id="PDisActiveY" value="Y" /></td> 
         <td width="40%">Yes</td> 
         <td width="20%"><input type="radio" name="PDisActive" id="PDisActiveN" value="N" /></td> 
         <td width="16%">No</td> 
        </tr> 
       </table> 
      </td> 
      <td class="tdPDClass"> 
       <table class="radioClass"> 
        <tr> 
         <td width="24%"><input type="radio" name="PDdeleted" id="0PDdeletedY" value="Y" /></td> 
         <td width="40%">Yes</td> 
         <td width="20%"><input type="radio" name="PDdeleted" id="0PDdeletedN" value="N" /></td> 
         <td width="16%">No</td> 
        </tr> 
       </table> 
      </td> 
     </tr> 
    </tbody> 
</table> 
+5

一些解釋將是有益的 –

+3

一些?很多的解釋;-) – magallanes

相關問題