【发布时间】:2013-11-21 17:53:00
【问题描述】:
我在 Weblogic 10.3.0 中有一个 Java Web 应用程序 (WAR):
- JSF 2.0
- Primefaces 3.5
- jboss-el-2.0.0.GA.jar(如果我用el-api-2.2.jar和el-impl-2.2.jar是一样的)
- validation-api-1.1.0.Final.jar
- Eclipselink (JPA 2.1)
- hibernate-validator-4.2.0.Final.jar
- JSTL 1.1
- Java EE 5
我在<p:dialog/> 中有一个<h:form/> 来编辑/创建实体并将它们保存到数据库中。
我的问题是<p:commandButton/> 在将值直接设置为实体属性时不会调用actionListener。例如,这是我的代码:
<h:form>
<p:outputLabel value="Name:" for="name" />
<p:inputText id="name" value="#{Servidores.selectedEntity.name}" title="Name" />
<p:outputLabel value="IP:" for="ip" />
<p:inputText id="ip" value="#{Servidores.selectedEntity.ip}" title="IP" />
<p:commandButton value="Submit" oncomplete="appEditingDialog.hide();" actionListener="#{Servers.processEntityAndRefresh()}"/>
</h:form>
但是,如果我将值设置为在 bean 中声明的简单字符串变量,而不是在实体中它可以工作。像这样:
<p:inputText id="name" value="#{Servidores.stringInMyBean}" title="Name" />
我认为这是一个验证问题,但如果我将此表单放在对话框之外,它会起作用。
这可能是什么问题和解决方案?我见过有人将属性直接放在@ManagedBean 中,但是,哇,我不能混合模型和控制器。
谢谢。
【问题讨论】:
-
确定您在服务器日志中没有 NPE?你真的查看了服务器日志吗?
-
我没有看到消息组件,可能是出了点问题而您没有看到?您可以添加
<h:messages />或<p:messages />来检查。 -
@BalusC 我发布了解决方案以及我遇到的所有问题!无论如何,谢谢。
标签: validation jsf primefaces