如何正确使用p:schedule?
How to use p:schedule correctly?
我正在尝试使用 jsf 创建议程。我查看了 prime faces' website 但我没有明白它是如何工作的,即使我复制了网站上提供的代码也是如此。我也在这里和 google 上进行了一些研究,但我发现没有任何效果。
所以我尝试做一个最简单的例子:
在我的 .xhtml 中:
<p:schedule value="#{agendaControl.planning}">
</p:schedule>
在我的 .java 文件中:
@Named
@ViewScoped
@Stateful(passivationCapable=true)
public class AgendaControl {
private ScheduleModel planning;
@PostConstruct
public void init() {
System.out.println("test");
planning = new DefaultScheduleModel();
DefaultScheduleEvent<?> event = DefaultScheduleEvent.builder()
.title("test")
.startDate(LocalDateTime.now())
.build();
planning.addEvent(event);
}
public ScheduleModel getPlanning() {
return planning;
}
public void setPlanning(ScheduleModel planning) {
this.planning = planning;
}
}
我想知道我做错了什么以及我应该如何使用 p:schedule 使其正常工作?
提前感谢您的帮助和任何提示。我的代码中可能有一些初学者错误,因为我以前从未使用过 jsf。
编辑:
我查看了 this Whosebug question,看看我的 @PostConstruct 注释方法是否有效,是的。我的计划变量中有我的“测试”事件。
经过更多的研究,我发现了如何让它按我想要的方式工作。这是使您的议程有效的示例极简主义代码。
注意:问题中引用的 link 是关于 PrimeFaces 11 的。Here is the link for PrimeFaces 8,此处使用的版本。文档比v11更清晰一些,别忘了查看其他信息!
agenda.xhtml :
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Agenda</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</h:head>
<body>
<p:growl id="messages" showDetail="true"/>
<p:schedule id="schedule" value="#{agendaControl.eventModel}"></p:schedule>
</body>
AgendaControl.java :
@Named
@ViewScoped // import javax.faces.view.ViewScoped;
public class AgendaControl implements Serializable {
private ScheduleModel eventModel;
@PostConstruct
public void init() {
eventModel = new DefaultScheduleModel();
DefaultScheduleEvent<?> event = DefaultScheduleEvent.builder()
.title("Champions League Match")
// as I tested, you NEED a start date and enddate
.startDate(LocalDateTime.now())
.endDate(LocalDateTime.of(2022, 1, 18, 12, 0)) // change with tomorrow's date
.build();
eventModel.addEvent(event);
}
public ScheduleModel getEventModel() {
return eventModel;
}
}
不要忘记:你需要在你的 pom.xml(在我的例子中是 Maven 项目)中添加这个依赖项:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>8.0</version>
</dependency>
如果您忘记了,您将无法在您的 .java 文件中导入所需的 类。
希望对您有所帮助。
我正在尝试使用 jsf 创建议程。我查看了 prime faces' website 但我没有明白它是如何工作的,即使我复制了网站上提供的代码也是如此。我也在这里和 google 上进行了一些研究,但我发现没有任何效果。
所以我尝试做一个最简单的例子:
在我的 .xhtml 中:
<p:schedule value="#{agendaControl.planning}">
</p:schedule>
在我的 .java 文件中:
@Named
@ViewScoped
@Stateful(passivationCapable=true)
public class AgendaControl {
private ScheduleModel planning;
@PostConstruct
public void init() {
System.out.println("test");
planning = new DefaultScheduleModel();
DefaultScheduleEvent<?> event = DefaultScheduleEvent.builder()
.title("test")
.startDate(LocalDateTime.now())
.build();
planning.addEvent(event);
}
public ScheduleModel getPlanning() {
return planning;
}
public void setPlanning(ScheduleModel planning) {
this.planning = planning;
}
}
我想知道我做错了什么以及我应该如何使用 p:schedule 使其正常工作?
提前感谢您的帮助和任何提示。我的代码中可能有一些初学者错误,因为我以前从未使用过 jsf。
编辑:
我查看了 this Whosebug question,看看我的 @PostConstruct 注释方法是否有效,是的。我的计划变量中有我的“测试”事件。
经过更多的研究,我发现了如何让它按我想要的方式工作。这是使您的议程有效的示例极简主义代码。
注意:问题中引用的 link 是关于 PrimeFaces 11 的。Here is the link for PrimeFaces 8,此处使用的版本。文档比v11更清晰一些,别忘了查看其他信息!
agenda.xhtml :
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:p="http://primefaces.org/ui"
xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title>Agenda</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</h:head>
<body>
<p:growl id="messages" showDetail="true"/>
<p:schedule id="schedule" value="#{agendaControl.eventModel}"></p:schedule>
</body>
AgendaControl.java :
@Named
@ViewScoped // import javax.faces.view.ViewScoped;
public class AgendaControl implements Serializable {
private ScheduleModel eventModel;
@PostConstruct
public void init() {
eventModel = new DefaultScheduleModel();
DefaultScheduleEvent<?> event = DefaultScheduleEvent.builder()
.title("Champions League Match")
// as I tested, you NEED a start date and enddate
.startDate(LocalDateTime.now())
.endDate(LocalDateTime.of(2022, 1, 18, 12, 0)) // change with tomorrow's date
.build();
eventModel.addEvent(event);
}
public ScheduleModel getEventModel() {
return eventModel;
}
}
不要忘记:你需要在你的 pom.xml(在我的例子中是 Maven 项目)中添加这个依赖项:
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>8.0</version>
</dependency>
如果您忘记了,您将无法在您的 .java 文件中导入所需的 类。
希望对您有所帮助。