我无法找出我做错了什么,所以我的dataTable没有显示在网页上。
我创建的User类并不是很复杂,但是我尝试在bean中设置了这三个以上的属性。
唯一显示的是facet Text“Test Header”
我缺少什么?
Testmonitor .xhtml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<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:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<head>
<title>Test Monitor</title>
<meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
</head>
<body onload="#{testdata.createUsers()}">
<p:dataTable id="overviewTable" var="collector" sortOrder="descending" value="#{testdata.userList}">
<f:facet name="header">
Test Header
</f:facet>
<p:column headerText="IP">
<h:outputText value="#{collector.ip}" />
</p:column>
<p:column headerText="CollectorID">
<h:outputText value="#{collector.collectorId}" />
</p:column>
<p:column headerText="ID">
<h:outputText value="#{collector.id}" />
</p:column>
</p:dataTable>
</body>
</html>
豆:Testdata.java
package MonitorTest;
import UserAndPosition.User;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import java.util.List;
@ManagedBean
@SessionScoped
public class Testdata {
private List<User> UserList;
private User aUser=new User();
public void createUsers() {
aUser.setCollectorId("AnyCollectorID");
aUser.setId("WND9L320NDUD");
aUser.setIp("192.168.2.1");
UserList.add(aUser);
//System.out.println("Post Construct durchgelaufen");
}
/**
* Regular Getter- and Setter Methods.
*/
public Testdata() {
}
public List<User> getUserList() {
return UserList;
}
public void setUserList(List<User> UserList) {
this.UserList = UserList;
}
}
提前致谢
答案 0 :(得分:1)
我没有测试过,但您肯定需要h:head
和h:body
。
同样在onload
中,您只能使用脚本(不是表达式语言),而是使用createUsers()
注释@PostConstruct
- 然后只要创建bean,该方法就会运行。
答案 1 :(得分:0)
我找到了解决方案:在错误发生之前,我更改了Netbeans中的项目属性,以免index.xhtml显示为初始页面。我刚进入&#34; /Testmonitor.xhtml"作为相对路径。 &#34; / faces&#34;然后,url的路径丢失了所有JSF或primefaces组件都没有显示(即使我没有收到任何错误消息......)
我不知道为什么这个&#34; / faces&#34;在网址中是如此重要,但显然它是!
有人能解释一下/面临的原因吗?