我对primefaces ajax调用侦听器有问题。(primefaces 4.0、JSF 2.0、JBoss 6.1.1)
这是我定义的SelectOne菜单:
<p:selectOneMenu id="sistema" label="Sistema" value="#{searchSchedulingBean.selectedSystem}">
<p:ajax listener="#{searchSchedulingBean.systemChangeListener}"
process="@this"
event="change"
update="autostrada"/>
<f:selectItems value="#{searchSchedulingBean.systemsList}" />
</p:selectOneMenu>
这是我的managedBean的主要部分
@ManagedBean
@ViewScoped
public class SearchSchedulingBean implements Serializable {
...
@PostConstruct
public void init() {
logger.info("init executed");
...
}
public void systemChangeListener() {
logger.info("listener executed");
...
}
当我打开页面时,日志告诉我init方法已被执行,selectOneMenus已正确填充,因此我假设托管bean正在工作。如果我更改了我在上面写的selectOneMenu,我想修改的selectOneMenu会受到影响,因为它是页面上唯一选择列表初始值的selectOneMenu,但条目没有按照我的要求更新,并且systemChangeListener方法没有执行,因为我在日志中没有看到“listener executed”。
为了调试的目的,我试图将托管bean从@VieweScoped更改为@ResestScoped,似乎selectOneMenu的更改会触发一个事件,因为每次修改菜单选择时,我都可以在日志上看到“初始化执行”(ManagedBean被重新创建为管理事件),但我在日志上没有看到“监听器执行”,因此监听器方法没有执行。没有引发异常。有办法解决吗?
我试过你的建议,但还是没用。我使用@ManagedBean@RequestScoped作为托管bean类注释,从日志中我可以看到,每当selectonemenu发生更改但listener方法未执行时,托管bean都会被启动。这可能是JBoss 6.1.1(Jsf 2.0)和Primefaces 4.0之间的兼容性问题吗?如果是,建议JBoss 6.1.1使用哪个版本的primefaces?使用primefaces是否需要任何特定配置?为了完整起见,我在这里写了部署描述符
网状物xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
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-app_3_0.xsd"
version="3.0"
metadata-complete="false">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Development</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>programmazioni.xhtml</welcome-file>
</welcome-file-list>
</web-app>
jboss网站。xml
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/PresentationModule</context-root>
</jboss-web>
这些是我在pom中导入的依赖项。xml
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.3-1101-jdbc4</version>
</dependency>
<dependency>
<groupId>org.primefaces</groupId>
<artifactId>primefaces</artifactId>
<version>4.0</version>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.7</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-html" target="_blank">log4j12</artifactId>
<version>1.7.7</version>
<scope>provided</scope>
</dependency>
我刚刚解决了,这个问题是由selectOneMenu的属性值引起的,该属性值必须是String类型,但在我的ManagedBean中,我设置为SseltItem类型。
试试这个。这对我有用
<p:ajax listener="#{searchSchedulingBean.systemChangeListener}" update="autostrada"/>
解决方案1:
代替
<p:ajax listener="#{searchSchedulingBean.systemChangeListener}"
通过
<p:ajax listener="#{searchSchedulingBean.systemChangeListener()}"
解决方案2:
代替
systemChangeListener()
通过
systemChangeListener(AjaxBehaviorEvent evt)
我正在使用Netty编写Java游戏服务器。我可以从本地主机成功连接客户端,但无法从远程PC连接。util中没有显示侦听套接字。我是不是遗漏了什么?
今天,当我使用chromedriver运行selenium时,我在控制台上看到了这条消息。我该如何抑制这种情绪? 相关代码: 我使用chromedriver的2.30版本也得到了同样的信息。 我以前没有收到过这条消息。我所做的唯一更改是将chrome更新为62.0.3202.94版(官方版本)(64位) Python 3.6.3 64,硒3.4.3, Windows 7 64. 编辑:我在Chro
问题内容: MongoDB建议,处理安全性的简单方法是在受信任的环境中运行安全性,因为“在这种配置中,必须确保只有受信任的计算机才能访问数据库TCP端口。” 这样做的最佳方法是什么?mongodb是否有办法仅本地监听localhost? 我正在使用Ubuntu 10.10 问题答案: 将以下行添加到: 正如@Josh Rickard在评论中所述:不要忘记在更新配置文件后重新启动进程:
Listener架构概述 Listener Listener.DrainType (Enum) Filter FilterChainMatch FilterChain Listener Listener proto { "name": "...", "address": "{...}", "filter_chains": [], "use_original_dst": "{...}
我们面临错误,应用程序无法连接到队列管理器,原因代码为mqrc 2538, “侦听器可用,但当我试图显示此侦听器的状态时,它显示未找到MQ对象。” 我们已经检查了错误日志,但没有相关客户端失败的信息。我们手动启动了监听器,监听器信息只在错误日志中可用。 我们还检查了“/var/mqm/error”,我们发现了FDC文件“Probe ID:xy132002”,我们与sysadmin有联系,他们挂载了
问题内容: 我正在开发一个Android应用程序,该应用程序将继续保持与Internet的连接。如果互联网是陶氏的,则应向用户提供适当的消息。 有没有像Internet Listener这样的东西?或如何实施此事件,以便每当没有Internet连接时都应发出警报。 问题答案: 为此创建一个广播接收器,并将其注册到清单文件中。 首先创建一个新类并扩展BroadcastReceiver。 将此代码放在