当前位置: 首页 > 面试题库 >

JSF从子类中选择项目

江洲
2023-03-14
问题内容

我正在尝试填充的列表<h:selectOneMenu>。但是,我尝试检索的列表是另一个类的一部分,该另一个类是基类中的变量。

这就是我所拥有的,而且我不确定这是否可行或如何实现。

我有一个Citation以下课程:

public class Citation {
    private int id;
    private String title;
    private Status status;

    // getters and setters
}

然后我有一个Status以下课程:

public class Status {
    private int id;
    private String name;

    public List<Status> getAll() {
        // goes to the database and gets a list of status objects
        System.out.println("I was called!");
    }

    // getters and setters
}

然后在我的xhtml页面上,我有以下内容:

<h:selectOneMenu id="citation_status" value="#{citation.status}">
    <f:selectItems value="#{citation.status.all}" var="s"
            itemLabel="#{s.name}" itemValue="#{s.id}" />
</h:selectOneMenu>

但是,这似乎根本没有getAllStatus类中调用方法。当网页加载完成,选择框为空,并且控制台没有的输出I was called!getAll()方法。

我对JSF有点陌生,我已经尝试过尽我所能,但是我不太确定搜索时要使用的术语,因为它在技术上没有被称为“子类”,但这是最好的名称我可以想出,所以不用说,我从搜索中什么都没想到。

附加信息

如果有帮助:

  • 我正在使用Glassfish作为我的应用程序服务器
  • 我正在将Hibernate用于我的ORM
  • 我正在使用JSF 2.0

问题答案:

显然#{citation.status}回来了null

就是说,这行不通。在h:selectOneMenu value必须在相同的类型相匹配f:selectItem itemValue,其在这种情况下的int。您将获得转换器异常。

如何最好地解决这个问题取决于功能要求,这个问题尚不清楚。也许您需要f:selectItem itemValue="#{s}",或者您需要h:selectOneMenu value="#{citation.id}"

更新 :关于转换器,这是一个启动示例:

@FacesConverter(forClass=Status.class)
public class URLConverter implements Converter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        try {
            return someStatusDAO.findById(Long.valueOf(value));
        } catch (SomeException e) {
            throw new ConverterException(new FacesMessage(String.format("Cannot convert %s to Status", value)), e);
        }
    }

    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value) {
        return String.valueOf(((Status) value).getId());
    }

}


 类似资料:
  • 我有两个表的项目和类别。类别表是自联接表。 项目表具有以下列ID、项目名称、类别ID Categories表包含以下列CATID、category\u name、parent\u ID 我需要选择在一个类别和这个主类别的子类别下列出但不起作用的项目。这里是mysql,它只返回sub。

  • 我试图让用户从JSF中的下拉列表中选择一个集合项。这是我正在使用的代码: 这是MyBean的代码: 如果需要,我的getter和setter为用户: 我的问题是,当它打印“所选用户是”时,没有写入用户。toString(),但用户列表。toString()!就像SelectOne菜单一样,它的设置不正确,但我已经搜索了很多。有人能帮忙吗?谢谢,安

  • 问题内容: 在SQL Server中, 您可以这样编写嵌套的SQL: 这样,我可以获得一个可以嵌套到其他查询中的临时表T。 但是我不能在oracle SQL中做同样的事情 它给我 选择*有效,但这不是我想要的。有人知道该怎么做吗? 问题答案: 无论我显式指定别名还是指定,您发布的查询都对我有效。收到异常后,您可以发布正在运行的确切查询吗? 我的猜测是您要选择不带双引号的内容。如果在Oracle中使

  • 问题内容: 如何从选择框中删除项目或向其中添加项目?我正在运行jQuery,这应该使任务更轻松。下面是一个示例选择框。 问题答案: 删除一个选项: 添加一个选项:

  • 我正在尝试建立自己的Webshop。 我有两个表-products和categories。结构是这样的: 当用户点击main category时,我选择要显示的产品如下所示: 问题是,我希望当用户单击主类别时,也可以选择其子类别中的所有产品。例如,类别是类别的子类别,在db中类似于 如您所见,我的当前选择将不会选择或,因为用户正在查看具有的类别...如何修改我的选择,使它将显示所有产品从主类别的子

  • 我想从选择一个菜单中选择一个自定义对象。它既不显示错误也不显示值。我该怎么办? 我的xhtml文档: 我的管理Bean类: