再次,我看到即使没有使用绑定属性,@ PostConstruct也会每次触发。看到这个代码:-
<?xml version='1.0' encoding='UTF-8' ?>
<!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:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form>
<c:forEach var="item" items="#{TestBean.listItems}">
<h:outputText value="#{item}"/>
</c:forEach>
<h:commandButton value="Click" actionListener="#{TestBean.actionListener}"/>
</h:form>
</h:body>
</html>
这是JSF中最简单的bean:
package managedBeans;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
@ManagedBean(name="TestBean")
@ViewScoped
public class TestBean implements Serializable {
private List<String> listItems;
public List<String> getListItems() {
return listItems;
}
public void setListItems(List<String> listItems) {
this.listItems = listItems;
}
public TestBean() {
}
@PostConstruct
public void init(){
System.out.println("Post Construct fired!");
listItems = new ArrayList<String>();
listItems.add("Mango");
listItems.add("Apple");
listItems.add("Banana");
}
public void actionListener(){
System.out.println("Action Listener fired!");
}
}
您是否看到任何会导致每次触发postconstruct回调的行为?我认为JSF 2.0非常不稳定。如果每次都要触发PostConstruct
@ViewScoped的作用是什么。为什么不只使用@RequestScoped?我以为我在申请中犯了一些错误。但是,当我在JSF中创建最简单的方法时,仍然会收到此错误。我是否不了解JSF的范围?还是他们测试不正确?此外,如果删除c:forEach并将其替换为ui:repeat,则可以正常工作。
等待答复以确认是错误还是有意阻止程序员使用jstl?
这确实是JSF2中的错误。这是鸡肉问题。视图范围的Bean以JSF视图状态存储。因此,只有在恢复视图阶段之后,视图范围的Bean才可用。但是,JSTL标记在还原视图阶段运行,而视图范围的bean尚不可用。这将导致创建一个全新的视图范围bean实例,然后将其替换为存储在还原的JSF视图状态中的实际视图范围bean。
据报道,这是JSF问题1665和JSF规范问题787,该问题已针对JSF
2.2修复并移植回Mojarra 2.1.18。因此,只需升级到最低的Mojarra 2.1.18即可。
如果您不能升级,那么最好的选择是在请求/会话/应用程序范围的bean上专门使用JSTL标记,或者寻找满足特定功能要求的替代方法。您可以替换<c:forEach>
用<ui:repeat>
的你已经发现了。
我的观点是: 是我的豆子:
问题内容: 我有一个带有可观察列表的ComboBox,该列表随用户键入字符或进行选择而更新。当我从ComboBox中选择一个项目并调用我的侦听器事件,然后从ComboBox的ObservableList中调用clear()方法时,引起了我遇到的问题。 完整代码 现在,当我收到错误消息时,ObservableList会按原样出现,但我仍然收到此异常。尝试调试此错误导致我的IDE在调用setAll(运
问题内容: 如何在特定时间段内调用Ajax请求?我应该使用Timer插件还是jQuery为此提供插件? 问题答案: 您可以使用内置的javascript setInterval。 或者如果您是更简洁的类型…
我有一个jersey服务器的例子,它适用于XML,但不适用于JSON。 如果我将此xml请求作为发送到服务器,则一切正常, 作为) 我在utilities-online.info将其翻译为JSON,并将其作为发送到相同的URL,具有相同的参数,但收到错误“400错误请求” 环境: Tomcat 7 球衣2.17 我尝试过的: 将添加到init-参数 启用init-参数为 添加了依赖项//
在我的nodejs应用程序中,我有一个包含以下内容的文件: index.js目录: 向上编码most每60秒检查一次my功能。此代码正常工作,但存在一个问题,例如,当5名用户在我的应用程序中联机时,我在控制台中看到重复60秒后的
如何在JMETER中创建一个测试,该测试将: 总共提出100个请求,但是使 每4次请求站点A和 每5次请求站点B