0

我现在只使用 Ice:faces 一个星期,我在弄清楚如何在我的页面上实现一个简单的 selectOneMenu 时遇到问题,这样我就可以通过一个简单的下拉菜单来选择一个人的性别,而不是输入内容。

我得到的错误如下


类型异常报告

信息

描述服务器遇到一个内部错误 () 阻止它完成这个请求。

例外

javax.el.MethodNotFoundException:找不到方法:data.SelectMenuHomes@ad503c.selectedGender(javax.faces.event.ValueChangeEvent)

note 异常的完整堆栈跟踪及其根本原因可在 Sun GlassFish Enterprise Server v2.1.1 日志中找到。


所以我认为我显然指的是不存在的东西

这是我的代码

在页面 jsp 表单中:

<ice:selectOneMenu valueChangeListener="#{homeSelect.selectedGender}">
    <f:selectItems value="#{homeSelect.genders}"/>
</ice:selectOneMenu>

选择菜单的类:

import java.util.LinkedList;
import java.util.List;

import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;


public class SelectMenuHomes
{
    public static String selectedGender = null;


    public static void changeGender(ValueChangeEvent event)
    {
    selectedGender = event.getNewValue().toString();
    }

    public List<SelectItem> getGenders()
    {
        List<SelectItem> genderList = new LinkedList<SelectItem>();
        genderList.add(new SelectItem("Male"));
        genderList.add(new SelectItem("Female"));
        return genderList;
    }


    public String getSelectedGender() {
        return selectedGender;
    }

    public void setSelectedGender(String selectedGender) {
        this.selectedGender = selectedGender;
    }

}

homeSelect 是我提供的托管 bean 的名称,用于引用 MenuSelectHomesClass

感谢您的任何帮助

4

2 回答 2

0

您缺少 valueChangedListener 调用的方法。jsf 文件中的 valueChangeListener="#{homeSelect.selectedGender}" 指向缺少的 homeSelect bean 中的方法“selectedGender(javax.faces.event.ValueChangeEvent)”。您没有使用 value= 属性。

如果没有转换器或实用程序,您无法将对象直接放在这些菜单中。

请参阅“在 selectMenu 中使用对象”:http ://balusc.blogspot.ch/2007/09/objects-in-hselectonemenu.html 还可以查看: http: //omnifaces.org,它带有这样的转换器

于 2012-07-13T08:52:53.527 回答
0

解决了

<ice:selectOneMenu value="#{dataControl.appendGender}"> 
<f:selectItems value= "#{homeSelect.genders}"/> 
</ice:selectOneMenu> 

appendGender 是用于运行 SQL 查询的方法中的变量以及 appendName appendSurname 等变量

于 2012-07-16T12:43:35.260 回答