无法在PrimeFaces中获取数据表行选择,jsf?

时间:2013-09-02 09:00:09

标签: eclipse jsf primefaces datatable

我正在开展一个项目。我需要从MySql数据库中获取一个列表并列出它。我正在使用JSF 2.1 Primeface 3.5和Eclipse Juno。我运行我的代码,但它不起作用。您可以在下面看到我的代码

     //LOGIN CLASS

    import parts
    @ManagedBean
    @SessionScoped
    public class Login {

private String username, password;
private PreparedStatement ps, ps2;
private ResultSet rs, rs2;
private List<Application> applications = new ArrayList<Application>();;
private Application selectedApplication;

// GETTERS SETTERS



public String login() {
    Connection object = new Connection();

    try {

        ps = nesne
                .getCon()
                .prepareStatement(
                        "select Username, Password from company where Username=? and Password=?");
        ps.setString(1, getUsername());
        ps.setString(2, getPassword());
        rs = ps.executeQuery();

        while (rs.next()) {

            getList();
            return "application";

        }

    } catch (Exception e) {
        System.err.println(e);

    }


    return "confirm";
}


private List<Application> getList() {
    Baglanti nesne = new Baglanti();
    try {

        ps2 = nesne
                .getCon()
                .prepareStatement(
                        "select ApplicationName from application where CompanyID=(select ID from company "
                                + "where Username=? and Password=?)");

        ps2.setString(1, getUsername());
        ps2.setString(2, getPassword());
        rs2 = ps2.executeQuery();


        while (rs2.next()) {
            Application obj = new Application();
            obj.setApplicationName(rs2.getString("ApplicationName"));
            applications.add(obj);

        }

    } catch (Exception e) {
        System.err.println(e);

    }
    return applications;
}

申请类别

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
@ManagedBean
@SessionScoped
public class Application {

private int ID;
private int CompanyID;
private String Type;
private Date Date;
private String ApplicationName;
private int CurrentMessageCount;
private int MaxMessage;
private String isPro;


    //GETTERS SETTERS

application.xhtml

   <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   <html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
   <h:head>
    <title>Login Confirmed</title>
   </h:head>
   <h:body>
    <h1 class="ui-widget-header ui-corner-all" align="center">Application
    List</h1>
<br />
<h:form id="form">

    <p:growl id="msgs" showDetail="true" />

    <p:dataTable id="applications" var="application"
        value="#{login.applications}">

        <p:column headerText="Application" style="width:24%">
            <h:outputText value="#{login.applications}" />
        </p:column>

        <p:column style="width:4%">
            <p:commandButton id="selectButton" icon="ui-icon-search"
                title="View">
                <f:setPropertyActionListener value="#{application}"
                    target="#{login.selectedApplication}" />
            </p:commandButton>
        </p:column>

    </p:dataTable>


</h:form>

我可以在看到此页面后正确登录。 enter image description here  现在我的错误在哪里?

2 个答案:

答案 0 :(得分:3)

您的var="application"与引用应用程序上下文的隐式EL对象(ServletContext)冲突。 You can find here a list of all implicit EL objects。记住它们。你永远不应该在这些名字上声明一个EL变量。

给它一个不同的名字。例如。 var="app"var="_application"

答案 1 :(得分:0)

在数据表中,var属性意味着数据库中的每个项都可以访问,因为这样&#34; var&#34;值。即: 你有Foo课:

class Foo{
int number;
String text;
//Setters and getters
}

另一个处理Foo对象列表的类(您的模型为CDI Bean):

@Named
class Boo{
List<Foo> list = new ArrayList<>();
//Getter and setters
}

所以要在jsf页面中列出所有内容,你应该像这样使用它:

<p:dataTable id="list" var="listobject" value="#{boo.list}">
   <p:column headerText="Number" style="width:24%">
      <h:outputText value="#{listobject.number}" />
   </p:column>
   <p:column headerText="Text" style="width:24%">
      <h:outputText value="#{listobject.String}" />
   </p:column>
</p:dataTable>

总结&#34; var&#34; value是boo对象的访问者字符串。

看看: PrimeFaces datatable demo在这里 Mkyong datatable tutorial