当前位置: 首页 > 知识库问答 >
问题:

选择行id==null

柳胜
2023-03-14

我有一个工作数据表,可以列出餐馆的对象。我想删除/编辑选定的,但当我选择一个以下异常显示:

org.springframework.dao.InvalidDataAccessApiUsageException: The given id must not be null!

这是桌子:

    <h:form id="restaurantForm">
    <p:dataTable var="restaurant"
            value="#{restaurantLazyBean.lazyDataModel}" paginator="true"
            rows="10" rowsPerPageTemplate="5,10,50" id="carTable" lazy="true"
            selectionMode="single" selection="#{RestaurantEditBean.selected}"
            rowKey="#{restaurant.id}"
            paginatorTemplate="{RowsPerPageDropdown} {FirstPageLink} {PreviousPageLink} {CurrentPageReport} {NextPageLink} {LastPageLink}">
            <p:ajax event="rowSelect"
                listener="#{RestaurantEditBean.onRowSelect()}"/>

            <p:column headerText="ID">
                <h:outputText value="#{restaurant.id}" />
            </p:column>
        </p:dataTable>

    </h:form>

现在所有ID都显示在表中,但在选择时会显示异常。我试着按照这个例子做每件事。但它们甚至没有rowKey属性。

如果相关的话,这是豆子。

@Named("RestaurantEditBean")
@ViewScoped
@EJB(name = "ejb.RestaurantService", beanInterface = RestaurantService.class)
public class RestaurantEditBean {
@EJB
private RestaurantService restaurantService;
private RestaurantDTO selected;

public void onRowSelect(SelectEvent event) {
    selected = ((RestaurantDTO) event.getObject());
}

public RestaurantService getRestaurantService() {
    return restaurantService;
}

public void setRestaurantService(RestaurantService restaurantService) {
    this.restaurantService = restaurantService;
}

public RestaurantDTO getSelected() {
    return selected;
}

public void setSelected(RestaurantDTO selected) {
    this.selected = selected;
}

}

Primefaces:5.3 JSF:2.2

共有1个答案

松涵容
2023-03-14

我发现我犯了一个可怕的错误。在我的LazyDataModel中,我必须重写一个函数。

@Override
    public RestaurantDTO getRowData(String rowKey) {
        Long id = Long.parseLong(rowKey);
        return restaurantService.findById(id);
        }

该问题是由之前的Long.getLong(rowKey)引起的,并且返回null。

 类似资料:
  • 通过id选择一行应该是一件简单的事情,但我在如何将其映射到对象时遇到了一些麻烦。 我发现这个问题是寻找同样的东西,但给出的答案对我不起作用。 目前我有这是工作,但它似乎没有那么优雅,因为它应该。 我觉得获取一个列表,然后使用是很大的,而且没有必要。我一定是漏掉了什么。

  • id选择器用于为带有特定 id 的 HTML 元素指定样式。id选择器,是选择器前面加一个井号(#)定义的选择器。 id 选择器可以应用于任何HTML元素,浏览器会在文档中寻找具有指定 id 的元素,为该元素应用样式。id 由用户自定义。如: #intro { font-weight: bold; } <p id="intro">本段落的文本将显示为粗体。</p> 这个p元素应用了id = "in

  • id 和 class 选择器 如果你要在HTML元素中设置CSS样式,你需要在元素中设置"id" 和 "class"选择器。 id 选择器 id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式。 HTML元素以id属性来设置id选择器,CSS 中 id 选择器以 "#" 来定义。 以下的样式规则应用于元素属性 id="para1": #para1 { text-align:cente

  • 问题内容: 通过在PG 9.1上使用libpq,我试图编写查询以从具有最高索引“ my_id”的行中获取值: 这给了我错误: 错误:WHERE子句中不允许聚合… 如何正确编写这样的查询? 问题答案: 如果您的目标是获取具有最高my_id值的行,则以下查询应达到相同的目标。

  • 问题内容: 我想根据URL字符串选择一些ID,但对于我的代码,它仅显示第一个。如果我写手册的ID是伟大的。 我有这样的网址http://www.mydomain.com/myfile.php?theurl=1,2,3,4,5(ids) 现在在myfile.php中,我有sql连接,并且: 如果我使用这个: 我得到正确的结果。现在,如果我使用下面的代码,它将无法正常工作: 有什么建议? 问题答案:

  • MyBatis代码不加载枚举类型(版本:3.4.4)。 在MySQL数据库中,我有一个带有“cartype”字段的表,它是INT(11)类型。在Java中,我创建了一个用于处理汽车类型的枚举: Car mapper xml如下所示(不包含所有数据): 最后,我的豆子看起来如下: bean也包含getters和setters。 当我尝试在java中获取汽车时,它抛出以下异常: