【问题标题】:JSF SelectOneMenu selected itemJSF SelectOneMenu 选定项
【发布时间】:2012-06-12 23:12:01
【问题描述】:

我无法从 SelectOneMenu 中获取所选项目。我为菜单提供了一个 ArrayList,并希望用户选择其中一个。我将菜单放入一个表单中,所以我有一个我打算用来执行选择的命令按钮。这个实现给了我这个错误:当我从菜单“user3”中选择时,无法将 java.lang.String 类型的 user3 转换为 java.util.ArrayList 类,因此它实际上正确地执行了选择。错误是指这一行

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

【问题讨论】:

  • Psssh.. 将鼠标放在您自己放置在问题上的[selectonemenu] 标签上方,直到出现一个黑框,然后单击其中的 info 链接。跨度>
  • 天哪,谢谢你,我从来没有注意到这么有用的选项!

标签: jsf selectonemenu


【解决方案1】:

你的数组列表被映射到

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

选择后,您尝试将所选值放入同一个列表中:

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

您的managed bean 中应该有一些对象(或在您的情况下为字符串)与您的视图链接,并用myUsers 的选定项填充它。例如:

private String selectedUser; // + appropriate getter and setter

&lt;h:selectOneMenu&gt; 应该是这样的:

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

选定的项目将被存储在selectedUser 中直到 jsf 生命周期结束

【讨论】:

  • @BalusC 的评论澄清了我。您刚刚发布了解决方案的一部分,但谢谢。我有一个问题:如何禁用出现的消息,指出没有为我的 submit() 方法生成的结果定义导航规则?如果我使用按钮没有任何反应(没有选择)。
  • 我找到了解决方案:我什么都没返回(void)所以它不会生成导航规则消息
【解决方案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>

【讨论】:

  • 一些解释会很有用
  • 一些?,很多解释 ;-)
猜你喜欢
  • 2014-02-12
  • 1970-01-01
  • 2013-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多