相关疑难解决方法(0)

如何将选定的行传递给dataTable中的commandLink或ui:repeat?

我在JSF 2应用程序中使用Primefaces.我有一个<p:dataTable>,而不是选择行,我希望用户能够直接对各行执行各种操作.为此,我<p:commandLink>在最后一栏中有几个.

我的问题:如何将行ID传递给命令链接启动的操作,以便我知道要对哪一行进行操作?我尝试使用<f:attribute>:

<p:dataTable value="#{bean.items}" var="item">
    ...
    <p:column>
        <p:commandLink actionListener="#{bean.insert}" value="insert">
            <f:attribute name="id" value="#{item.id}" />
        </p:commandLink>
    </p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

但它总是产生0 - 显然在f呈现属性时行变量不可用(当我使用固定值时它可以工作).

有人有替代解决方案吗?

datatable jsf parameter-passing commandlink jsf-2

97
推荐指数
3
解决办法
17万
查看次数

显示Hibernate/JPA导致JSF数据表原因:java.lang.NumberFormatException:对于输入字符串:"[propertyname]"

我最初的以下查询获得List<Employee>:

Query query = session.createQuery("select table1 from Table as table1");
this.employees = (List<Employee>) query.list();
Run Code Online (Sandbox Code Playgroud)

这在以下数据表中成功呈现:

<p:dataTable var="employee" value="#{bean.employees}">
    <p:column id="name" headerText="Name">
        <h:outputText value="#{employee.name}" />
    </p:column>
    <p:column id="id" headerText="ID" >
        <h:outputText value="#{employee.id}" />
    </p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试从2个表中检索它时,如下所示:

Query query = session.createQuery("select a.name, b.id from Table1 as a, Table2 as b"); 
this.employees = (List<Employee>) query.list();
Run Code Online (Sandbox Code Playgroud)

它抛出以下异常:

java.lang.NumberFormatException: For input string: "name"
    at java.lang.NumberFormatException.forInputString(Unknown source)
    at java.lang.Integer.parseInt(Unknown source)
    at java.lang.Integer.parseInt(Unknown source)
    at javax.el.ArrayELResolver.toInteger(ArrayELResolver.java:166)
    at javax.el.ArrayELResolver.getValue(ArrayELResolver.java:46)
    ...
Run Code Online (Sandbox Code Playgroud)

这是怎么造成的,我该如何解决?

datatable jsf jpa primefaces

3
推荐指数
1
解决办法
2396
查看次数