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

Primeface可数据行选择

叶炜
2023-03-14

Edit2-我添加了faces配置。xml在文章的末尾。

Primefaces数据表行选择有问题。我希望能够选择一行,并将数据移动到一个对象中,然后可以对其进行操作。我使用的是基于primefaces showcase示例的模型,但它不起作用。坦白地说,我对什么是错的已经没有想法了。下面是我的xhtml和managedbean。

<html xmlns="http://www.w3c.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui" >
<h:head>

</h:head>
<h:body>
<center>
<h:form id="form">

<p:dataTable id="personTable" var="client" value="#{tableBean.persons}" rowKey="#{client.name}"
             selection="#{tableBean.person}" selectionMode="single">

    <f:facet name="header">
        Click "View" button after selecting a row to see details
    </f:facet>

    <p:column headerText="Name">
        #{client.name}
    </p:column>

    <p:column headerText="Address">
        #{client.address}
    </p:column>

    <p:column headerText="Phone" >
        #{client.phone}
    </p:column>
</p:dataTable>

<h:panelGrid id="display" columns="2" cellpadding="4">


        <h:outputText value="Name:" />
        <h:outputText value="#{tableBean.person.name}" />

        <h:outputText value="Address:" />
        <h:outputText value="#{tableBean.person.address}" />

        <h:outputText value="Phone:" />
        <h:outputText value="#{tableBean.person.phone}" />

</h:panelGrid>

</h:form>

</center>
</h:body>
</html>

托管Bean:

package com.dave.test;

import java.util.ArrayList;
import java.util.List;

public class TableBean {

private List<Person> persons = null;
private Person person;

public TableBean() {
    persons = new ArrayList<Person>();
    persons.add(new Person("Jimmy", "18 Maple", "337-278-1019"));
    persons.add(new Person("Sally", "47 Oak", "787-509-3819"));
    persons.add(new Person("Roger", "754 Fifth Ave.", "926-420-8219"));
    persons.add(new Person("Mimi", "891 2nd St.", "713-371-8632"));

}

public List<Person> getPersons() {
    return persons;
}

public void setPersons(List<Person> persons) {
    this.persons = persons;
}

public Person getPerson() {
    return person;
}

public void setPerson(Person person) {
    this.person = person;
}


}

谢了戴夫

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="2.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-    
 facesconfig_2_0.xsd">
 <managed-bean>
   <managed-bean-name>tableBean</managed-bean-name>
   <managed-bean-class>com.dave.test.TableBean</managed-bean-class>
   <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
</faces-config>

共有2个答案

伊俊能
2023-03-14

Loúnico que dees hacer es al bean TableBean.javaquarle(borrar)el@SessionScoped y a la clase Car.javaquase@ManagedBean(name="car"),@SessionScoped,实现序列化。esta clase es una简单的clase no tiene porque联合国管理人员的儿子。

翻译的:

你所要做的就是带上TableBean。JavaBean(删除)@SessionScoped并乘坐汽车。java类@ManagedBean(name=“car”),@SessionScoped实现了可序列化。这个类是一个简单的类,不需要是managebean,只需要是数据。

洪富
2023-03-14

我假设当你点击该行时,没有数据。这是因为您使用的是请求范围的bean。这意味着加载页面时,bean会被填充。加载页面后,bean就消失了。

我建议将您的范围更改为ViewScope,看看这是否有帮助。

此外,如果您使用的是jsf 2.0,您可以使用注释来代替faces-config.xml文件。你的支持者会是这样的:

package com.dave.test;

import java.util.ArrayList;
import java.util.List;

public class TableBean {

private List<Person> persons = null;
private Person person;

@ManagedBean
@ViewScoped
public TableBean() {
    persons = new ArrayList<Person>();
    persons.add(new Person("Jimmy", "18 Maple", "337-278-1019"));
    persons.add(new Person("Sally", "47 Oak", "787-509-3819"));
    persons.add(new Person("Roger", "754 Fifth Ave.", "926-420-8219"));
    persons.add(new Person("Mimi", "891 2nd St.", "713-371-8632"));

}

public List<Person> getPersons() {
    return persons;
}

public void setPersons(List<Person> persons) {
    this.persons = persons;
}

public Person getPerson() {
    return person;
}

public void setPerson(Person person) {
    this.person = person;
}


}

现在你可以从faces-config.xml.移除你的管理豆

编辑我刚刚意识到没有ajax事件来处理行选择。如果您正在查看primefaces即时行选择,则需要注意它们使用的是

 类似资料:
  • 我想知道如何更新PrimeFaces数据表行。这是我的datatable照片,以便更好地了解我: ![1]: http://i.stack.imgur.com/N1jGz.png 我想为每一行选择他各自的状态,然后单击保存状态按钮来保存这些值。 这是我的xhtml页面代码: 提前感谢。

  • 我有一个带有incell编辑的数据表,它可以正确显示记录,但当我尝试编辑一行时,更改不会反映出来。以下是xhtml代码: 以下是托管bean函数: 或者,我也尝试了:

  • 我使用的是primefaces 3.5,在datatable中的一列中有一个p:selectonemenu。我在同一数据表的另一列上有一个提交按钮。当我提交时,该行将被删除。在这里,当我选择“其他”然后执行提交操作并更新表单时,其他行中的p:selectonemenu项将获得“其他”作为第一个值。每次将“其他”设置为最后一个值的方法是什么

  • 译者:bat67 最新版会在译者仓库首先同步。 在这个教程里,我们将学习如何使用数据并行(DataParallel)来使用多GPU。 PyTorch非常容易的就可以使用GPU,可以用如下方式把一个模型放到GPU上: device = torch.device("cuda:0") model.to(device) 然后可以复制所有的张量到GPU上: mytensor = my_tensor.to(

  • 我正在尝试为我的JSF数据表实现延迟加载,我的应用程序正在使用JSF2.0。Spring3和冬眠4。 我有以下的道 在ManagedBean中,我有 在实体类中 我面临的问题是,当我尝试将我的应用程序部署到weblogic 10.3.6时,我得到以下异常。 如何解决此问题? 另一点是,除了使用以下内容之外,还有其他方法可以获取用于延迟加载的行计数吗? 谢谢

  • 这是我在Stack Overflow上的第一篇文章。在发布之前,我研究了很多。在我使用Java Primefaces的系统中,我使用普通的SQL。我在第三个企业项目中,我更喜欢这种方式。 我找不到任何使用普通SQL的例子,只有使用框架(JPA等) 我知道在数组列表中我会手动传递限制。选择... from... ORDER BY... LIMIT 但是我需要一个完整的例子,使用数据库(不是内存中的静